4

我尝试使用 javacript SDK 获取访问令牌,然后将该访问令牌延长 60 天。我从响应中得到这样的响应错误:Object { message="Invalid OAuth access token.", type="OAuthException", code=190}

我的期望:

  1. 获取 60 天到期的新访问令牌
  2. 控制台到屏幕。

我的代码:

window.onload = function() {

var isLogin = true;

FB.init({appId:422642254433770, cookie:true, status:true, xfbml:true });

FB.getLoginStatus(function(response) {
    if (response.status === 'connected') {
        // the user is logged in and connected to your
        // app, and response.authResponse supplies
        // the user’s ID, a valid access token, a signed
        // request, and the time the access token 
        // and signed request each expire
        var uid = response.authResponse.userID;
        var accessToken = response.authResponse.accessToken;
        var accessTokenOld = response.authResponse.accessToken;

        //Extend access token                    
        var OauthParams = {};
        OauthParams['client_id'] = '//REMOVED APP ID';
        OauthParams['client_secret'] = '//REMOVED APP SECRET';
        OauthParams['grant_type'] = 'fb_exchange_token';
        OauthParams['fb_exchange_token'] = 'accessToken';
        OauthParams['response_type'] = 'token';

        console.log("Old accessToken => " + accessToken);
        FB.api('/oauth/access_token', 'post', OauthParams, function(response) {
            console.log(response);

            if (!response || response.error) {
                console.log(response.accesstoken);
            } else {
                console.log("Lay new access token bi loi " + response.error.message);
            }
        });        
    }
});
};

我尝试在没有任何线索的情况下在任何地方搜索这个问题 3 天。我有没有人有经验?请帮忙。

非常感谢

4

3 回答 3

1

在客户端中执行此操作是一个坏主意,因为需要在实际客户端中包含应用程序机密,这是非常危险的。最好在您的服务器上调用一个单独处理此问题的端点,以便应用程序机密保留在您的受控环境中。

于 2014-04-14T20:14:16.683 回答
0

如果在您的 FB 应用程序的高级设置中您启用了“删除 offline_access 权限”,则默认情况下您的所有访问令牌将是 60 天。

我们最近遇到了同样的问题,这解决了这个问题。

希望这可以帮助!

于 2012-08-02T01:52:53.850 回答
-2

我找到了一个简单的解决方案,可以使用 Jquery valide 获得长达 2 个月的扩展访问令牌

传递给 URL 的变量:

var accessToken = 'CURRENT_ACCESS_TOKEN';
var appid       = 'APPID';
var appsecret   = 'APPSECRET';

您的网址应指向

var exchangeUrl = "https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&fb_exchange_token="+accessToken+"&client_id="+appid+"&client_secret="+appsecret;

发出 Ajax 请求

$.ajax({  
type: "GET",
url: exchangeUrl,  
success: function(data)
{ 
   extended = data.split('=');
   extendedAT = extended['1'].replace('&expires','');
       alert(extendedAT);

}

});
于 2014-04-01T11:53:50.200 回答