2012-01-01 12 views
0

私のiframeのfacebookアプリケーションでの小さな問題。私は多くのfbページ(このFBページの正確なURLを知ることはできません)上のタブでアプリケーションを使用したいです。しかし、アプリケーションが許可を求めた後にリダイレクトに問題があります。 fbページの代わりに、ユーザーをキャンバスURLにリダイレクトします。それは間違っています!どのようにそれを解決するには?複数のページにあるfacebook iframeアプリケーションのリダイレクト

答えて

1

ファンページ(別名Tab)のリダイレクト方法を使用しないでください。許可を得るには、Javaスクリプトで次のメソッドを呼び出してください。

function getPermission(){ 

    FB.ui({ 

     'method': 'permissions.request', 

     'perms': 'publish_stream,email,user_photos', 



     }, 

    function(response) { 

    if (response.perms != null) { 

// user is already connected 
token=response.session.access_token; 
uid=response.session.uid; 


    } 

    else if(response.status=="connected") 
    { 
token=response.session.access_token; 
uid=response.session.uid; 

// new user is now connected 

    } 




      else 

      { 

// user has not given a permission hence not connected. 

       } 

}); 

return false; 

} 
+0

あなたは、最新の変更でこのコードをテストしていますjavascript SDK?それは "セッション"の代わりに "perms"と "authResponse"ではなく "scope"であるべきですか? - ああ、FB.loginに比べてどのような利点がありますか? –

+0

Oauth 2.0を使用している場合は、そうする必要があります。 –

+0

"2011年12月13日現在、JavaScript SDKは認証用OAuth 2.0のみをサポートしています.JA SDKでOAuth 2.0を有効にする機能は、7月に初めて導入されました。この変更により、response.sessionをresponse.authResponseに置き換えたことを確認してください。許可を求めるには、permの代わりにscopeを使用する必要があります。 - https://developers.facebook.com/docs/reference/javascript/FB.login/ –

0

あなただけのこのようなものが動作するはず、ログイン/アクセス権(これは必要なときにアクセス権を取得して処理しません)のために一度尋ねている場合:

function withLogin(callback) { 
    var ifLogin = function(response, true_cb, else_cb) { 
    if(response.authResponse) 
     true_cb(null, response); 
    else 
     else_cb(true, null); 
    }; 

    FB.getLoginStatus(function(response) { 
    ifLogin(response, callback, function(err, response) { 
     FB.login(
     function(response) { 
      ifLogin(response, callback, callback); 
     }, 
     { scope: "email,user_photos" } 
    ); 
    }); 
    }); 
} 

... 
window.fbAsyncInit = function() { 
    ... 
    withLogin(function(err, response) { 
    if(err) 
     alert("This only works if you log in!"); 
    else 
     alert("UserId: " + response.authResponse.userID); 
    }); 
}; 
関連する問題