使用react-native-fbsdk

时间:2018-07-29 21:22:05

标签: react-native react-native-fbsdk

我正在使用react-native-fbsdk在我的react-native应用程序中通过Facebook登录。
我打电话给LoginManager.logOut()进行登出:自从我下次尝试登录时,它实际上并没有正确登出,它不再要求我再次输入登录名/密码,因此我只能登录一个帐户。我找不到登录到另一个Facebook帐户的方法。

这个人(react-native-fbsdk: How properly log out from facebook?)遇到了同样的问题,似乎没有找到解决办法。

iOS上的一个技巧是前往野生动物园,然后从移动Facebook网站注销。但这在android上不起作用:(

编辑:

这是我的Facebook登录代码:

function login() {
  return LoginManager.logInWithReadPermissions(FACEBOOK_PERMISSIONS)
    .then(result => {
      if (result.isCancelled) {
        throw new Error("Login canceled");
      }
      return AccessToken.getCurrentAccessToken();
    })
    .then(({ accessToken }) => accessToken);
}

注销/登录的视频:https://d3vv6lp55qjaqc.cloudfront.net/items/132L2U1p383E1y0l2l2v/Screen%20Recording%202018-10-31%20at%2002.52%20PM.mov

2 个答案:

答案 0 :(得分:1)

问题不是与react-native-fbsdk有关,而是与Facebook或用户用来登录以连接到您的应用程序的浏览器有关,原因是您的应用程序每次通过浏览器或Facebook应用程序访问Facebook登录名用户帐户已经登录的地方,这就是为什么它不显示用户名或密码字段的原因。

要解决此问题,用户必须从他/她通过其登录(首先获得应用许可)的浏览器或Facebook注销,以便当用户返回到您的应用时并选择Facebook登录选项(假设用户也退出了您的应用程序),那么他/她可以看到该应用程序重定向到带有用户名和密码字段的Facebook或浏览器登录页面。

答案 1 :(得分:0)

所以我找到了这个解决方案,这不是黑客,而是在Facebook上执行注销的正确方法。您需要创建一个GraphRequest来要求删除权限。 在代码下方,希望对您有所帮助。我在Android和IOS上对其进行了测试,并且运行起来非常有魅力。

    FBLogout = (accessToken) => {
        let logout =
            new GraphRequest(
                "me/permissions/",
                {
                    accessToken: accessToken,
                    httpMethod: 'DELETE'
                },
                (error, result) => {
                    if (error) {
                        console.log('Error fetching data: ' + error.toString());
                    } else {
                        LoginManager.logOut();
                    }
                });
        new GraphRequestManager().addRequest(logout).start();
    };