我对来自facebook的访问令牌非常困惑。我是如何获取用户的访问令牌并使用它从图API中获取数据
window.fbAsyncInit = function() {
FB.init({
appId : 'app ID',
status : true,
cookie : true,
xfbml : true,
oauth : true,
});
FB.getLoginStatus(getStatus);
FB.Event.subscribe('auth.authResponseChange', getStatus);
function getStatus(response) {
if ( response.status === 'connected' ) {
var accessToken = response.authResponse.accessToken;
console.log("accessToken = " + accessToken);
$.ajax({
dataType : "jsonp",
type : "GET",
url : "https://graph.facebook.com/me/albums?access_token=" + accessToken,
success : function(data) {
$.each(data, function(index, value) {
console.log(index + ": " + value);
})
}
});
}
}
};
但是,我总是得到一个空数据。在我访问图形API文档后https://developers.facebook.com/docs/reference/api/并单击其中一个图形链接,我注意到在那里生成的访问令牌总是与我从代码中检索的不同。例如,图api文档中的当前访问令牌是
“AAAAAAITEghMBAMwuyHZCO3VOAvCm9hHpaZC9PGV9238ixsZB7zSfuplZBTZCLRj6cEViZADJlVcjOfInwvcbhqu3XBF1w4ZAxvPbexcGQZAYzb4bHAKsMbLF”
,控制台日志中的那个是
“AAAG0ZCFantJ8BAAFcMdDOyDyT4OBtjrvULEaS2o94gZAU7U1xITaogFXCZBghQP8G9bjEh3XSCATQOZCUSZCuNWFvEfypIAmcz9bkbk5qRBlHUZAOE4guW”
我认为我可能以错误的方式做到了这一点。任何人都可以帮我解释如何以正确的方式从图API中检索数据吗?
任何形式的帮助将不胜感激。在此先感谢:)
答案 0 :(得分:2)
首先使用您的authToken运行此网址:
https://graph.facebook.com/me/permissions?access_token=USER_ACCESS_TOKEN
您几乎肯定只会在回复中看到基本权限,这就是您无法通过拨打用户专辑获取数据的原因。
然后,您希望通过Authentication Process运行您的用户,确保request the permissions you need(可能是' user_photos'在您的情况下)。
这两个链接提供了更多信息。祝你好运!
答案 1 :(得分:0)
访问令牌将永远不会相同。所以这种行为是正确的。
回到你的问题,我认为它主要与范围有关。
答案 2 :(得分:0)
我使用facebook c#sdk开发了一个应用程序,在那个应用程序中我这样做了:
- 当要提交帖子时,将用户重定向到facebook(带有appid,app-secret,auth-token等参数) 重定向-URL);
- Facebook将要求用户使用他的凭据登录。
- 当用户登录时,Facebook将重定向回redirect-url。 (使用authtoken和新的auth-code)。
- 然后我们应该使用这个auth-code,app-id和app-secret来获取用户访问令牌。 (这是通过休息api调用来完成的 网址 https://graph.facebook.com/oauth/access_token?client_id=client_id&redirect_uri=redirect_uri&client_secret=client_secret&code=auth-code 这将返回令牌的用户令牌和到期时间
- 然后我们可以使用此用户访问令牌发布到fb。
醇>
最初我误解了auth-code并将其用作用户访问令牌,我总是将结果作为未经授权的令牌。 请检查这是否对您有所帮助。