Omniauth を Rails で記述された API に統合して、Android アプリケーションで使用しようとしています。これは、JSON で omniauth コールバックを処理できるようにしたいということです。
デフォルトでは、Omniauth はそのコールバックをに送信します/auth/:provider/callback
が、代わりに Omniauth がそのコールバックを に送信するように強制する方法はあります/auth/:provider/callback.json
か?
Omniauth を Rails で記述された API に統合して、Android アプリケーションで使用しようとしています。これは、JSON で omniauth コールバックを処理できるようにしたいということです。
デフォルトでは、Omniauth はそのコールバックをに送信します/auth/:provider/callback
が、代わりに Omniauth がそのコールバックを に送信するように強制する方法はあります/auth/:provider/callback.json
か?
コールバックを処理するアクションでフォーマットを指定できます。
# in route.rb
match '/auth/:provider/callback' => 'authentications#create'
# in authentications_controller.rb
class AuthenticationsController < ApplicationController
def create
# your code here
respond_to do |format|
format.json { ... } # content to return
end
end
end
Rails バックエンドでリクエスト オブジェクトを検査することで、なんとかそれを行うことができました。
アプリでリクエストを行うとき、フォーマットを定義する送信にデータを追加します。
format: "json"
そして omniauth はコールバックを行います
/auth/:provider/callback
私の場合は一致します
sessions#create
HTML リクエストとして。しかし、そこに到達したら、Rails でリクエスト オブジェクトを調べて omniauth.params ハッシュを検索すると、そこにある値の 1 つが最初のリクエストのデータに渡された形式であることがわかります。
"omniauth.params"=>{"format"=>"json", "provider"=>"facebook", "code"=>"..."}
この「format」=>「json」を検索し、jsonをレンダリングして回答として実行するのはあなたの母です。
問題が解決することを願っています。