如何从javascript SDK中的FB.login方法获取访问令牌

Dam*_*ran 56 facebook facebook-javascript-sdk

我需要从FB.loginJavascript SDK中的方法获取访问令牌.我的登录代码是

FB.login(function(response) {
    if (response.session) {
        if (response.perms) {

        } else {
            // user is logged in, but did not grant any permissions
            alert("No Permission..");
        }
    } else {
        // user is not logged in
        alert("Please login to facebook");
    }
}, {perms:'read_stream,publish_stream,offline_access'});
Run Code Online (Sandbox Code Playgroud)

有没有办法获得访问令牌?我可以使用获取访问令牌PHP.

提前致谢....

Pav*_*nok 118

您可以使用FB.getAuthResponse()['accessToken']以下方式访问令牌:

FB.login(function(response) {
   if (response.authResponse) {
     var access_token =   FB.getAuthResponse()['accessToken'];
     console.log('Access Token = '+ access_token);
     FB.api('/me', function(response) {
     console.log('Good to see you, ' + response.name + '.');
     });
   } else {
     console.log('User cancelled login or did not fully authorize.');
   }
 }, {scope: ''});
Run Code Online (Sandbox Code Playgroud)

编辑:更新以使用自2011年12月以来需要的Oauth 2.0.现在使用FB.getAuthResponse(); 如果您使用的浏览器没有控制台,(我正在和您通信,Internet Explorer)请务必注释掉console.log行或使用日志-failsafe脚本如:

if (typeof(console) == "undefined") { console = {}; } 
if (typeof(console.log) == "undefined") { console.log = function() { return 0; } }
Run Code Online (Sandbox Code Playgroud)

  • Facebook API发生了变化,可能会破坏此代码.如果你使用Oauth 2.0,那么访问令牌是`response.authResponse.accessToken (35认同)
  • 是的,你也不应该使用"if(response.session)"它应该替换为"if(response.authResponse)"(第2行) (4认同)
  • 谢谢@No One.我更新了最新facebook API的帖子. (2认同)

小智 12

response.session.access_token在我的代码中不起作用.但这有效: response.authResponse.accessToken

     FB.login(function(response) { alert(response.authResponse.accessToken);
     }, {perms:'read_stream,publish_stream,offline_access'});
Run Code Online (Sandbox Code Playgroud)


Nim*_*imo 5

如果您已经连接,只需在 javascript 控制台中输入:

FB.getAuthResponse()['accessToken']
Run Code Online (Sandbox Code Playgroud)