3

Facebookのjavascript sdkを使用するページタブにアプリがあります。新しいユーザーがアプリに来ると、予想される「Facebookでログイン」ポップアップが表示されます。 FB.Loginのscopeパラメータに入れた拡張パーミッションもいくつかあります。ユーザーが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

+0

魅力的な作品です! – foxybagga

+0

このような変数からこのチェックを行う方法は? var scope = 'user_friends、user_birthday、user_education_history'? – FooBar

関連する問題