facebook - JS SDK getLoginStatus 不返回 userID 也不返回signedRequest

标签 facebook cordova facebook-javascript-sdk

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

相关文章:

android - Keytool 不询问密码(使用 Facebook lib 和 android)

javascript - 如何使用 Javascript SDK 提示用户将照片分享到 FB

authentication - window.fbAsyncInit/FB.init 似乎没有运行

javascript - IONIC是否支持多线程并调用Java开发的jar lib

javascript - 使用phonegap在jquery mobile中链接页面/加载javascript的最佳实践是什么?

ios - iOS 中的 Google 日历应用 URL 方案

javascript - 如何在 facebook api 中获取用户位置和用户家乡?

javascript - 从 iframe 发布到墙上后重定向

用于操作 Facebook 图像的 Javascript 代码在控制台中有效,但在扩展中无效

javascript - 单击按钮时如何退出 native 应用程序?