我正在使用 PhoneGap/Cordova 和 facebook 插件。一切似乎都正常,除了 getLoginStatus 没有按照定义工作 here和 here 。调用时,它返回一些数据,但不是全部:它不返回 userID 也不返回signedRequest。 这是代码:
FB.getLoginStatus(function(response) {
if (response.status == 'connected') {
var fb_uid = response.authResponse.userID;
var fb_signedRequest = response.authResponse.signedRequest;
alert('logged in');
} else {
alert('not logged in');
}
});
userID 用省略号 (...) 填充,而signedRequest 未定义。
我设法通过对/me 的图形调用来获取 userID:
FB.api('/me', function(me){
if (me.id) {
var fb_uid = me.id;
}
});
我无法在文档中找到任何方法来获取signed_request,我必须使用它来向用户已通过facebook连接到的远程服务验证facebook用户的身份(我已经进行了登录调用)所以用户没问题)。 基本上问题是我对 getLoginStatus 的调用返回
{
status: 'connected',
authResponse: {
session_key: true,
accessToken: 'a long string...',
expiresIn:'a number',
sig: '...', //exactly this string
userID:'...' //exactly this string
secret:'...' //exactly this string
expirationTime:'a long number'
}
}
而不是记录的内容
最佳答案
作为背景,当使用插件进行身份验证时,JavaScript SDK API 会调用 iOS/Android SDK 来处理授权,然后将响应身份验证数据传递回 JS 部分。 native (iOS/Android) SDK 不会获取已签名的请求,以便能够将其传递给 JS。这就是为什么它是空的。
如果您使用最新的插件,您现在至少应该可以看到用户 ID。六月的那个很可能没有传回来。否则,作为解决方法,您可以在 JS 代码中身份验证成功时执行对/me 端点的调用以获取用户 ID。请参阅执行此操作的 Hackbook 示例。
关于facebook - JS SDK getLoginStatus 不返回 userID 也不返回signedRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10928009/