Richie
(Richie Rich)
1
ユーザーフィールドの値を更新する逆アセンブルを試みています。
Reverse engineer the Discourse API の手順に従って、テストユーザーを編集し、ブラウザの開発者ツールのネットワークタブで何が起こっているかをメモしました。
https://example.com/u/my-username-here.json に PUT する必要があることがわかりました。
少し混乱したのは、JSONペイロードではなく、フォームデータであることです。ペイロードは次のとおりでした。 user_fields%5B1%5D=some+dji%2C+some+Autel\u0026user_fields%5B5%5D=%40UKDroneClub\u0026user_fields%5B6%5D=%40iKiteFlyer\u0026user_fields%5B8%5D=test\u0026timezone=Europe%2FLondon\u0026default_calendar=none_selected
1つのユーザーフィールド値のみを更新したいです。
URLエンコードされています: user_fields%5B8%5D=test
デコードすると、次のようになります: user_fields[8]=test
(8 = 更新したいユーザーフィールドのID)
このフォームデータ値をJSONペイロードに変換して、 PUT できるようにするにはどうすればよいですか? 
「いいね!」 2
Richie
(Richie Rich)
2
ユーザープロフィールの「自己紹介」セクションはAPI呼び出しで更新できるのですが、user_fields を更新できません。何が間違っているのかわかりません。
ユーザーを編集する際にブラウザを監視すると、以下の PUT が表示されます。
bio_raw=aboutmetest&user_fields%5B1%5D=some+dji%2C+some+Autel&user_fields%5B5%5D=%40UKDroneClub&user_fields%5B6%5D=%40iKiteFlyer&user_fields%5B8%5D=qwerty&timezone=Europe%2FLondon&default_calendar=none_selected
PUT API呼び出しを行うために、以下のコードを使用しています。
' ヘッダーを追加
request.AddHeader("Content-Type", "application/x-www-form-urlencoded")
request.AddHeader("Accept", "application/json")
request.AddHeader("Api-Key", strAPIKey)
request.AddHeader("Api-Username", strUsername)
' フォーム本文パラメータを追加
request.AddParameter("bio_raw", DateTime.Now())
request.AddParameter("user_fields%5B8%5D", DateTime.Now())
'request.AddParameter("user_fields[8]", DateTime.Now())
API呼び出しを行うたびに、bio_raw の値は(テストとして)現在のタイムスタンプに更新されます。
しかし、なぜか user_fields[8] の値はまったく更新されません。エラーはなく、更新されないだけです。
URLエンコードされた user_fields%5B8%5D とプレーンテキストの user_fields[8] の両方を試しましたが、どちらも効果はありませんでした。
何か明らかなことを見落としていますか? 
Richie
(Richie Rich)
3
アーーーッッッ 
はい、そうでした。
これです:
API呼び出しがユーザーによって実行されたときに、user_fieldの編集を防ぎます。
もちろん、そうなります 
API呼び出しをやり直して system で実行すると、正常に動作します 
「いいね!」 6
system
(system)
クローズされました:
4
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.