Judith
(Judith Meyer)
1
コミュニティ向けRailsサイトを持っています。コミュニティメンバーがDiscourseに個別にログインする必要がないようSSOを採用しており、2つのサーバー間の情報交換を円滑にするためにDiscourse APIを利用しています。現在、ユーザーのアバターを統一したいと考えています。つまり、メインサイトと同じアバターをフォーラムでも表示したいのです。その方法はありますか?
通常、APIリクエストで行っているように、Faradayを使ってhttps://discuss.diem25.org/uploads.jsonに対してPOSTリクエストを送信しました。ヘッダーにはAPIキーとAPI-Usernameを含め、以下のようなボディを指定しました。
{
"type": "avatar",
"user_id": user_id,
"file": "https://internal.diem25.org/.../user.jpg",
"synchronous": "true"
}
しかし、このリクエストは「Internal Server Error」を返してしまいます。最終手段としてファイルを再アップロードすることも検討していますが、Faradayを使うと最初は難しそう、あるいは不可能に見えるため、他の方法を探しています。
「いいね!」 1
osioke
(Osioke Itseuwa)
2
SSO がアバターを上書き というサイト設定を試してみて、SSO システムと一緒にアバター URL を渡すのはどうでしょうか?API で手動でアップロードするよりも、SSO で対応する方がよいかもしれません。
「いいね!」 5
Judith
(Judith Meyer)
3
ありがとうございます、良いアイデアですね。ただ、このアプローチは統合の問題を逆転させることになります。現在、Discourse にアバターがあるユーザーが、私のサイトにはアバターを持っていないからです。私の選択肢は、Discourse のアバターをすべて私のサイトにアップロードして「SSO がアバターを上書き」を設定するか、私のサイトのアバターをすべて Discourse にアップロードすることのようです。
「いいね!」 3
blake
(Blake Erickson)
4
それは、Faraday でファイルの URL を直接指定できないためだと思います。まずファイルを読み込む必要があるか、同様の処理が必要でしょう。
ただし、discourse_api gem を使用して、URL を指定してアバターを更新することは可能です。
client.update_avatar(
username: "norbert6",
url: "http://vignette1.wikia.nocookie.net/despicableme/images/1/15/Jerryindespicableme.png"
)
「いいね!」 2