0

Facebook でのユーザー ログインの処理について、Sorcery が提供するガイドに従いました。

# callback method called by Facebook after getting the authorization by the user
if user = login_from(provider) # provider == "facebook"
  redirect_to root_path #, :notice => "Logged in from #{provider.titleize}!"
else
  begin
    user = create_from(provider)
    ...

ただし、ユーザーがサイトを離れて Facebook ページに移動し、ここにリダイレクトされるだけで済みます。

私が達成したいのは、私のページのクリーンなポップアップである Facebook JavaScript SDK を使用したときに表示されるものです。これを達成するために、Railscasts のチュートリアルに従いました。

$('#sign_in').click (e) ->
  e.preventDefault()
  FB.login (response) ->
    window.location = '/auth/facebook/callback' if response.authResponse

ただし、 にはと とauthResponseのみが含まれ、ソーサリーには が必要です。accessTokensignedRequestuseridcode

これを適切に行う方法はありますか (または?codeを使用して取得しaccessTokenます)。

4

1 に答える 1

1

ただし、authResponseにはaccessToken、signedRequest、およびuseridのみが含まれ、Sorceryにはコードが必要です。

これを適切に行う(またはaccessTokenを使用してコードを取得する)方法はありますか?

サーバー側のフローでは、これはアクセストークンを取得するための中間ステップにcodeすぎません。アプリはコードを取得し、コードをアクセストークンと交換します。

クライアント側のフローでは、終了時にすでにアクセストークンを取得しているため、それ以上の「適切な」取得は行われません。

したがって、2つのオプションがあります。

  • Sorcery-thingieをリファクタリングして、コードを取得するステップをスキップし、それをアクセストークンと交換し、取得後にアクセストークンを自分で直接「設定」します(Sorceryが設定したい場合はどこでも)。また

  • サーバー側のフローに固執しますが、ポップアップウィンドウで自分で開きます。その後もコードを取得しますが、ポップアップウィンドウ内に取得します。したがって、ポップアップウィンドウを閉じて、後で元のウィンドウを自分でリロードする必要があります。

于 2012-10-05T08:13:20.613 に答える