react-native - 使用 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);
}
解决方案
所以我找到了这个解决方案,这不是黑客攻击,而是在 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();
};
推荐阅读
- laravel - Vuejs - 如何正确注销用户?
- php - laravel 在尝试登录时返回 false 以获得正确的凭据
- python - 带有多个选项的 while 循环内的键盘输入
- azure - Azure 逻辑应用定价
- microsoft-teams - Microsoft Teams 频道/Amazon Lex 集成
- python - 我想在洗牌前回忆我的 Deck 类来洗牌以恢复牌组,这样我就不会洗牌少于 52 张牌的牌组
- c# -
不适用于 ASP.Net MVC 5 - colors - 如何防止 azure cloud shell 以纯绿色显示目录?
- python - 仅过滤列中的某些行?
- flutter - Flutter PDF Viewer 只显示白页