是否可以使用ajax从canvas教程中检索facebook app授权代码?

时间:2011-12-05 07:41:12

标签: php ajax facebook facebook-apps

这是canvas教程中的代码 http://developers.facebook.com/docs/appsonfacebook/tutorial/

这将获取授权代码,将用户重定向回画布页面并在网址中显示代码。

类似于http://apps.facebook.com/yourapp/?code=1234thecode5678

那么,是否可以使用ajax并在不重定向的情况下获取代码?而不是这种方法?

提前致谢      

     $app_id = "YOUR_APP_ID";

     $canvas_page = "YOUR_CANVAS_PAGE_URL";

     $auth_url = "http://www.facebook.com/dialog/oauth?client_id=" 
            . $app_id . "&redirect_uri=" . urlencode($canvas_page);

     $signed_request = $_REQUEST["signed_request"];

     list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

     $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);

     if (empty($data["user_id"])) {
            echo("<script> top.location.href='" . $auth_url . "'</script>");
     } else {
            echo ("Welcome User: " . $data["user_id"]);
     } 
 ?>

1 个答案:

答案 0 :(得分:1)

您可以使用Facebook JS SDK登录用户,无需刷新或重定向用户 取自主题Facebook JS SDK Documentation

下的FB.login
FB.login(function(response) {
   if (response.authResponse) {
     console.log('Welcome!  Fetching your information.... ');
     FB.api('/me', function(response) {
       console.log('Good to see you, ' + response.name + '.');
       FB.logout(function(response) {
         console.log('Logged out.');
       });
     });
   } else {
     console.log('User cancelled login or did not fully authorize.');
   }
 }, {scope: 'email'});

注意:如果您使用的是oAuth 2.0,那么这就是实现方式(您确实应该这样做)。取自相同的网址:

  

如果没有OAuth 2.0,则应将范围替换为perms,并且   response.authResponse替换为response.session。 请记住   所有应用必须在2011年10月1日之前迁移到OAuth 2.0。