API でユーザーフィールドを変更する方法

(編集: 解決策は 2 番目の投稿を参照: API でユーザーフィールドを変更する方法)

@sam さん、以前(現在は閉じられたトピック内の投稿で)「カスタムフィールドをユーザーレコードの更新に API で使用したい人がいる」という件について、「そのフィールドはホワイトリストに登録する必要があります。/admin/customize/user_fields に追加できますか?それともこのフィールドはユーザーから完全に非表示にすることを意図していますか?」とおっしゃっていました。

2 つの簡単な質問があります:

  1. /admin/customize/ エンドポイントとは何ですか?
  2. フィールドを「ホワイトリストに登録」するにはどうすればよいですか?(どういう意味でしょうか?API がアクセスできるようにホワイトリストに登録するのでしょうか?!)

両方の答えを調べても見つからなかったので、あなた(あるいはこれを知っている他の人)の助けを借りられることを願っています。

余談ですが、私の最終的な目標はシンプルに見えます:API を使ってカスタムユーザーフィールドの値を設定・取得したいのです。しかし、その方法を明確に答えてくれる人が見つからず、非常に困難だと感じています。:frowning:

これまでに私が把握していることは以下の通りです:

  1. SSO 経由でカスタムフィールドをある程度渡すことはできますが、それは API ではありません。
  2. フロントエンドが API を呼び出す際(XHR リクエストを監視して確認)、カスタムフィールドは名前ではなく番号で参照されているようです。名前で探している場合、実際には users[2] であるため、これは大きな違いになります。

ご覧の通り、これは直感的ではありません ;-)。また、「取得」の方はユーザーレコードの一部になるため(現在は API で取得可能)比較的簡単だと思っていますが、「設定」を API で行うことができるまで確認できません。

とにかく…この問題を最終的に解決したら、次にこれを行おうとする人のために役立つ形で、その知識をどう還元すればよいでしょうか?

「いいね!」 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

/admin/customize/user_fields は、カスタムユーザーフィールドを設定する UI ページです。

「いいね!」 3

これまでのサポートに感謝します!参考までに、user_fields を名前で参照できる機能があればさらに良いと思います(より堅牢に見えるため)。しかし、ご提供いただいたこの説明と情報は非常に役立ちました。心から感謝しています :slight_smile:

「いいね!」 1

ユーザーを 更新 する場合も同じPOSTエンドポイントを使用しますか? すべてのフィールドが必要ですか?

「いいね!」 2

こんにちは! user_fields のインデックスを取得する方法を知りたいです。Web コントローラーに移動してインデックスを取得する必要がありますか? user_fields を取得するための API はありますか?そうすればインデックスを取得できます。ありがとうございます。

「いいね!」 1

/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