3

我正在使用带有 facebook 插件的 PhoneGap/Cordova。一切似乎都正常,除了 getLoginStatus 没有按照这里这里的定义工作。调用时,它返回一些数据,但不是全部:它不返回 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 的图形调用来获取用户 ID:

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'
    }
}    

而不是记录的

4

1 回答 1

0

作为背景,当使用插件进行身份验证时,JavaScript SDK API 会调用 iOS/Android SDK 来处理授权,然后将响应身份验证数据传递回 JS 部分。本机 (iOS/Android) SDK 不会收到签名请求,以便能够将其传递给 JS。这就是为什么它是空的。

如果您使用最新的插件,您至少现在应该可以看到用户 ID。六月的那个可能没有把它传回去。否则,作为一种解决方法,您可以在 JS 代码中的身份验证成功时调用 /me 端点以获取用户 ID。请参阅执行此操作的 Hackbook 示例。

于 2012-10-24T12:21:26.643 回答