2

ユーザーがアプリを承認した後、Facebook アプリがキャンバス URL (http://my-domain/app) にリダイレクトされます。一連の手順は次のとおりです。

1) 新しいユーザーがキャンバスでアプリを開き、Javascript リダイレクトを介して oauth 権限ダイアログにリダイレクトされます

2)ユーザーがアプリを承認すると、アプリのredirect_uriが呼び出され、セッションに保存したアクセストークンを取得します

3)許可されたユーザーのユーザーIDも取得し、セッションに保存します

4) キャンバスの URL にリダイレクトすると、Facebook のキャンバスから移動します。

5) キャンバス ページ (http://apps.facebook.com/app_name) にリダイレクトしようとすると、セッションの値がクリアされ、プロセスが繰り返されるため、無限ループに陥ります - 理由がわかりません.

これは Rails 3 アプリで、koala gem を使用しています。コードを以下に示します。

  def index
    if (session[:access_token].blank?)
    session[:oauth] = Koala::Facebook::OAuth.new(APP_ID, APP_SECRET, oauth_redirect_url)
    end
    @app_id = APP_ID
  end

  def redirect
    session[:access_token] = session[:oauth].get_access_token(params[:code]) if params[:code]
    if session[:access_token].blank?
      flash[:error] = "You didn't authorize the application. Please authorize the application to throw a firecracker on your friend's wall!"
      redirect_to :action => "authorize_app" and return
    else
      session[:fb_user_id] = Koala::Facebook::API.new(session[:access_token]).get_object("me")["id"]
    end
    redirect_to :action => "index"
  end

私はそれを修正しようとしてほぼ1日を無駄にし、解決策を探しましたが、今のところうまくいきません.

4

1 に答える 1

3

ステップ1、ステップ2、ステップ3でOK

ステップ 4:ユーザーがアプリを承認すると、キャンバス URL の yourapp.com (キャンバス URL) にリダイレクトされます。次のようにします。

<script>
window.top.location='https://apps.facebook.com/yourapp' //(canvas page)
</script>

ステップ 5:キャンバス ページが呼び出されるsigned_requestと、fb API を使用してそれを解析します。

于 2011-10-20T07:46:02.797 に答える