3

我有一個應用程序在頁面選項卡,使用Facebook的JavaScript的SDK。當有新用戶訪問該應用時,我會看到預期的「使用Facebook登錄」彈出窗口。我也有一些我已經放在FB.Login的範圍參數中的擴展權限。用戶使用Facebook登錄後,我看到預期的擴展權限彈出。唯一的問題是,如果用戶跳過擴展權限,對話將返回一個access_token,但它對擴展權限無效。下面的代碼示例。用戶跳過Facebook的身份驗證對話權限JavaScript的SDK

window.fbAsyncInit = function() { 
    FB.Canvas.setAutoGrow(); 
    FB.init({ 
     appId: facebookAppId, 
     status: true, // check login status 
    }); 

    function updateFBInfo(response) { 
     console.log('updateResp:'); 
     if (response.authResponse) { 
      //user is already logged in and connected 
      FB.api('/me', function (info) { 
       displayUserInfo(info, response); 
      }); 
     } 
     else { 
      FB.login(function (loginResponse) { 
       if (loginResponse.authResponse) { 
        FB.api('/me', function (info) { 
         displayUserInfo(info, loginResponse); 
        }); 
       } 
      }, { scope: 'email,manage_pages,offline_access,publish_stream' }); 
     } 
    } 

    FB.getLoginStatus(updateFBInfo); 
}; 

我想我的問題是,要麼,我缺少什麼(這個一定是東西容易),或者是有沒有辦法來檢查,看看如果返回acces_token實際上是有效的?

回答

9

在繼續之前,您需要明確檢查權限。如果他們沒有提供必要的權限,則需要再次顯示FB.login()以及必要的範圍。

下面是用於檢查權限的代碼:

FB.api('/me/permissions', function (response) { 
      var perms = response.data[0]; 
      // Check for publish_stream permission in this case.... 
      if (perms.publish_stream) {     
       // User has permission 
      } else {     
       // User DOESN'T have permission. Perhaps ask for them again with FB.login? 
      }            
    }); 
+1

作品完美,感謝您的快速反應。我知道這很簡單。 – mlienau 2012-04-27 14:48:18

+0

工程就像一個魅力! – foxybagga 2013-08-30 05:26:49

+0

從這樣的變量中檢查的方法是: var scope ='user_friends,user_birthday,user_education_history'? – FooBar 2013-10-10 11:59:26

相關問題