FB SDK 错误:登录失败(react-native)

问题描述 投票:0回答:5

我目前正在为我的 Reach Native 应用程序设置 Facebook 身份验证。在react-native-fbsdk设置出现常见问题之后,现在Facebook应用程序事件可以工作并且LoginManager会加载。

我的问题:授权后,LoginManager 将我重定向回应用程序,然后向我显示错误:

登录失败

我正在使用非常标准的 LoginManager 实现:

const FBSDK = require('react-native-fbsdk');
const {
  LoginManager,
  AccessToken,
} = FBSDK;


export default class FacebookAuth extends Component {

  facebook(){
    LoginManager.logInWithReadPermissions(['public_profile', 'email']).then(
  function(result) {
    if (result.isCancelled) {
      alert('Login cancelled');
    } else {
      alert('Login success with permissions: '
        +result.grantedPermissions.toString());
    }
  },
  function(error) {
    alert('Login fail with error: ' + error);
  }
);

你有什么指点给我吗?

我已经查过了:

  • Info.Plist 中的 FB 应用程序信息
  • Facebook 应用程序中的 iOS Bundle ID
  • 客户端 OAuth 设置
  • FBSDK LoginButton(同样的错误)

我正在运行:iOS 10 和react-native 0.38.0。

谢谢!

ios react-native fbsdk react-native-fbsdk
5个回答
67
投票

使用 Facebook SDK 登录时出错 — React Native

问题是 Facebook SDK 仍然保留之前的会话令牌,当我尝试再次登录时,我收到此错误,要解决此问题,我所要做的就是从 LoginManager 调用 logOut 方法。

之前尝试这样做

LoginManager.logInWithReadPermissions...

LoginManager.logOut();

4
投票

尝试不同的解决方案几个小时后,由于 Cassiano Montanari 和 zavadpe 的评论,我成功修复了它不正确的安装

我最终得到了这个配置:

Pod 文件:

  pod 'FBSDKCoreKit', '4.38.0'
  pod 'FacebookSDK', '4.38.0'
  pod 'FBSDKShareKit', '4.38.0'
  pod 'FBSDKLoginKit', '4.38.0'

您需要确保在 Link Binary With Libraries 中添加

libRCTFBSDK.a
并从 pod 文件中删除
'react-native-fbsdk', :path => '../node_modules/react-native-fbsdk'

我的问题在我将 FBSDK 升级到 4.39 后开始出现,如果我使用

pod 'react-native-fbsdk', :path => '../node_modules/react-native-fbsdk'
,我找不到任何方法在 pod 文件中指定 SDK 版本。

我认为一种选择是使用Carthage,但我还没有尝试过。


3
投票

根据 Cassiano Montanari 的评论,从 4.39.0 降级到 4.38.0 是解决方案。我整个下午都在为此苦苦挣扎,降级立即解决了它。


0
投票
import { AccessToken, LoginManager } from "react-native-fbsdk"
const facebooksignUp = async () => {
    try {
      if (Platform.OS === "android") {
        LoginManager.setLoginBehavior("web_only")
      }
      const result = await LoginManager.logInWithPermissions([
        "email",
        "public_profile"
      ])
      if (result.isCancelled) {
      } else {
        await AccessToken.getCurrentAccessToken()
          .then(async res => {
            const token = res.accessToken.toString()
            let data = { access_token: token }
            props.facebookLoginUser(data)
          })
          .catch(err => {
            err
          })
      }
    } catch (err) {
      err
    }
  }

-1
投票

我想,我解决了这个问题。 我仍然不是 100% 清楚为什么,但它与此相关: 如何在 iOS 10 上使用 Facebook iOS SDK

启用钥匙串访问后,身份验证起作用。

© www.soinside.com 2019 - 2024. All rights reserved.