首页 > 解决方案 > 使用 react-native-fbsdk 注销的正确方法

问题描述

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

这家伙(react-native-fbsdk:如何正确地从 facebook 注销?)遇到了同样的问题,似乎没有找到解决方案。

iOS 上的一个技巧是去 safari,然后从移动 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

标签: react-nativereact-native-fbsdk

解决方案


所以我找到了这个解决方案,这不是黑客攻击,而是在 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();
    };

推荐阅读