4

Omniauth を Rails で記述された API に統合して、Android アプリケーションで使用しようとしています。これは、JSON で omniauth コールバックを処理できるようにしたいということです。

デフォルトでは、Omniauth はそのコールバックをに送信します/auth/:provider/callbackが、代わりに Omniauth がそのコールバックを に送信するように強制する方法はあります/auth/:provider/callback.jsonか?

4

3 に答える 3

2

コールバックを処理するアクションでフォーマットを指定できます。

# 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
于 2013-07-12T03:19:55.173 に答える
2

Rails バックエンドでリクエスト オブジェクトを検査することで、なんとかそれを行うことができました。

アプリでリクエストを行うとき、フォーマットを定義する送信にデータを追加します。

format: "json"

そして omniauth はコールバックを行います

/auth/:provider/callback

私の場合は一致します

sessions#create

HTML リクエストとして。しかし、そこに到達したら、Rails でリクエスト オブジェクトを調べて omniauth.params ハッシュを検索すると、そこにある値の 1 つが最初のリクエストのデータに渡された形式であることがわかります。

"omniauth.params"=>{"format"=>"json", "provider"=>"facebook", "code"=>"..."} 

この「format」=>「json」を検索し、jsonをレンダリングして回答として実行するのはあなたの母です。

問題が解決することを願っています。

于 2014-01-06T11:02:10.333 に答える