pnoeric
(Eric)
2020 年 4 月 14 日午後 7:16
1
(編集: 解決策は 2 番目の投稿を参照: API でユーザーフィールドを変更する方法)
@sam さん、以前(現在は閉じられたトピック内の投稿で)「カスタムフィールドをユーザーレコードの更新に API で使用したい人がいる」という件について、「そのフィールドはホワイトリストに登録する必要があります。/admin/customize/user_fields に追加できますか?それともこのフィールドはユーザーから完全に非表示にすることを意図していますか?」とおっしゃっていました。
2 つの簡単な質問があります:
/admin/customize/ エンドポイントとは何ですか?
フィールドを「ホワイトリストに登録」するにはどうすればよいですか?(どういう意味でしょうか?API がアクセスできるようにホワイトリストに登録するのでしょうか?!)
両方の答えを調べても見つからなかったので、あなた(あるいはこれを知っている他の人)の助けを借りられることを願っています。
余談ですが、私の最終的な目標はシンプルに見えます:API を使ってカスタムユーザーフィールドの値を設定・取得したいのです。しかし、その方法を明確に答えてくれる人が見つからず、非常に困難だと感じています。
これまでに私が把握していることは以下の通りです:
SSO 経由でカスタムフィールドをある程度渡すことはできますが、それは API ではありません。
フロントエンドが API を呼び出す際(XHR リクエストを監視して確認)、カスタムフィールドは名前ではなく番号で参照されているようです。名前で探している場合、実際には users[2] であるため、これは大きな違いになります。
ご覧の通り、これは直感的ではありません ;-)。また、「取得」の方はユーザーレコードの一部になるため(現在は API で取得可能)比較的簡単だと思っていますが、「設定」を API で行うことができるまで確認できません。
とにかく…この問題を最終的に解決したら、次にこれを行おうとする人のために役立つ形で、その知識をどう還元すればよいでしょうか?
「いいね!」 2
blake
(Blake Erickson)
2020 年 4 月 14 日午後 9:33
2
API を通じてカスタムフィールド付きのユーザーを作成するには、以下のように user_fields[1] を渡します。
curl -i -sS -X POST "http://localhost:3000/users" \
-H "Content-Type: multipart/form-data;" \
-H "Api-Key: d19b5a38ed13745f4c5..." \
-H "Api-Username: system" \
-F "name=cbbc7188c201b59ebc06" \
-F "username=cbbc7188c201b59ebc06" \
-F "email=cbbc7188c201b59ebc06@example.com" \
-F "password=b6629ed30b4bc3de32ce452d171540b0" \
-F "active=true" \
-F "approved=true" \
-F "user_fields[1]=a874d830b60" \
-F "user_fields[2]=732418b131b"
また、/u/<username>.json に対して PUT リクエストを送信することで更新することもできます。
「いいね!」 7
riking
(Kane York)
2020 年 4 月 14 日午後 10:20
3
/admin/customize/user_fields は、カスタムユーザーフィールドを設定する UI ページです。
「いいね!」 3
pnoeric
(Eric)
2020 年 4 月 15 日午前 11:15
4
これまでのサポートに感謝します!参考までに、user_fields を名前で参照できる機能があればさらに良いと思います(より堅牢に見えるため)。しかし、ご提供いただいたこの説明と情報は非常に役立ちました。心から感謝しています
「いいね!」 1
mattdm
(Matthew Miller)
2021 年 12 月 2 日午前 3:50
5
ユーザーを 更新 する場合も同じPOSTエンドポイントを使用しますか? すべてのフィールドが必要ですか?
「いいね!」 2
こんにちは! user_fields のインデックスを取得する方法を知りたいです。Web コントローラーに移動してインデックスを取得する必要がありますか? user_fields を取得するための API はありますか?そうすればインデックスを取得できます。ありがとうございます。
「いいね!」 1
blake
(Blake Erickson)
2023 年 3 月 16 日午後 2:36
7
/admin/customize/user_fields に GET リクエストを行うと、ユーザーフィールドのリストが返されます。
{
"user_fields": [
{
"id": 2,
"name": "Favorite OS",
"description": "What is your favorite Operating System?",
"field_type": "text",
"editable": true,
"required": false,
"show_on_profile": true,
"show_on_user_card": true,
"searchable": false,
"position": 1
}
]
}
「いいね!」 5
ありがとうございます。あなたの回答は私にとって非常に役立ちます!
「いいね!」 2