网站搜索

typescript - react native FaceBook SDK 获取 iOS 令牌返回错误的签名


我正在使用最新的 Facebook SDK react-native-fbsdk-next,我成功让它在安卓上工作,但在 iOS 上不起作用

            LoginManager.logInWithPermissions([
              'public_profile',
              'instagram_basic',
              'instagram_manage_insights',
              'pages_show_list',
              'ads_management',
              'business_management',
              'ads_read',
              'read_insights',
            ]).then(
              (result: any) => {
                if (result.isCancelled) {
                  console.log('Login cancelled');
                } else {
                  if (Platform.OS === 'ios') {
                    AuthenticationToken.getAuthenticationTokenIOS().then(
                      (data: any) => {
                        console.log(
                          'after get accress token ',
                          data?.authenticationToken.toString(),
                        );

                        console.log(
                          'Login success with permissions: ' +
                            result.grantedPermissions.toString(),
                        );
                        //data.accessToken.toString()
                        dispatch(fetchPages(data?.authenticationToken));
                      },
                    );
                  }

我正在获取一个令牌,但每当我尝试使用它获取页面时,我都会收到签名错误。有建议可能是什么错误吗?我做错了什么。

const manager = new GraphRequestManager();
    const igAccountFields =
      'instagram_business_account{id,name,username,profile_picture_url},id,username,name,tasks,category,access_token';
    const req = new GraphRequest(
      '/me/accounts',
      {
        httpMethod: 'GET',
        accessToken: accessToken,
        parameters: {
          fields: {
            string: igAccountFields,
          },
        },
      },
      _responseInfoCallback,
    );
    manager.addRequest(req);
    manager.start();```

答案#1

我在使用 Ruby 的 fb_graph2 gem 时遇到了类似的错误,抛出了 Bad signature 错误。

我发现 Facebook 文档中指出 苹果不允许将令牌移动到服务器。 这可以解释为什么它在安卓上可用,但在 iOS 上不可用。
https://developers.facebook.com/docs/facebook-login/guides/access-tokens#portabletokens

所以看起来你应该在客户端获取用户资料,连同令牌一起发送到你的服务器,验证令牌以查看资料是否可靠。

我希望这能帮到你。