2014-01-07 60 views
0

假設我要求用戶訪問他們的基本公共個人資料信息和朋友列表(默認項目)。這將彈出一個(接受/取消)。另外我要求訪問他們管理的fanpage。目前在Facebook上,這會彈出一個SECOND彈出窗口,用戶可以點擊SkipFacebook的JS SDK:有沒有什麼方法可以找出用戶是否沒有接受權限?

如果用戶接受第一個彈出窗口,但在第二個窗口點擊跳過(manage_pages),我想提出一條消息,要求他們重新考慮他們的決定,並解釋爲什麼此權限很重要。

有什麼方法可以確定用戶已經接受第一個權限,但不是第二個權限?

FB.login(function(response) { 

    if(response.status === "connected"){ 
      //First permission was accepted, but not necesserily 'manage_permissions' 
    } else { 
     //The entire popup was not accepted 
    } 

}, {scope: 'manage_pages'}); 
+0

答案有幫助嗎?你有沒有設法解決這個問題? –

回答

0

從的FB.login調用的響應對象不包括這些信息,所以你需要做的第二API調用來/me/permissions,並期待在應對這一點。

簡單的例子:

FB.login(function(loginResponse) { 
    if ('connected' == loginResponse.status) { 
     FB.api('/me/permissions', function(permissionResponse) { 
      if (!permissionResponse.data[0].manage_pages) { 
       console.log('user did not give app manage_pages permission'); 
      } else { 
       console.log('user gave app manage_pages permission'); 
      } 
     }); 
    } 
}, {scope: 'manage_pages'}); 
0

您可以檢索使用用戶的訪問令牌信息。 Facebook爲調試訪問令牌提供支持。您可以通過向debug_token連接發出GET請求來檢索與特定用戶的訪問令牌相關的信息。喜歡的東西:

GET /debug_token? 
    input_token={input-token}& 
    access_token={access-token} 

,這將返回以下信息:

{ 
     "data": { 
      "app_id": 000000000000000, 
      "application": "Social Cafe", 
      "expires_at": 1352419328, 
      "is_valid": true, 
      "issued_at": 1347235328, 
      "scopes": [ 
       "email", 
       "publish_actions" 
      ], 
      "user_id": 1207059 
     } 
    } 

正如你所看到的,輸出包含有關訪問令牌關聯的權限信息。您可以閱讀範圍部分以驗證用戶是否已接受任何擴展權限。您可以在Getting Info about Tokens and Debugging參考資料中獲得關於它的更多信息。

相關問題