使用 react-native-fbsdk 注销的正确方法
Posted
技术标签:
【中文标题】使用 react-native-fbsdk 注销的正确方法【英文标题】:Proper way to logout with react-native-fbsdk 【发布时间】:2018-07-29 21:22:04 【问题描述】:我正在使用 react-native-fbsdk
在我的 react-native 应用程序上通过 facebook 登录。
我打电话给LoginManager.logOut()
注销:它实际上并没有正确注销,因为下次我尝试登录时,它不会再次要求我输入登录名/密码,所以我只能登录一个帐户。我找不到登录另一个 Facebook 帐户的方法。
这家伙 (react-native-fbsdk: How properly log out from 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
【问题讨论】:
您找到解决方案了吗? @zarnifoulette 不是一个解决方案,而是一个 hack:如果您改用网络行为,它会要求再次登录。const webLoginBehavior = Platform.OS === "ios" ? "web" : "WEB_ONLY"; LoginManager.setLoginBehavior(webLoginBehavior);
我找到了一个解决方案,实际上如果你想注销,你需要做一个 GraphRequest。我会为你写一个合适的解决方案。
我忘了回复你,但是我也遇到了同样的问题。目前这对我来说不是问题。但是,如果您找到解决方案,我会很高兴听到它:)
【参考方案1】:
所以我找到了这个解决方案,这不是破解,而是在 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();
;
【讨论】:
它确实会注销,但是当我再次尝试登录时,它不会要求输入电子邮件或密码,我只能使用同一用户重新登录。 :( 你能给我看一些截图和你的登录代码吗? 大家好。 @zarnifoulette 对此有什么解决方案吗?我尝试了上面的图形请求提案,但正如 httpete 所说,它在第二次尝试时不要求任何形式的确认。 大家好,我已经发布了一个github issue,你可以在这里关注github.com/facebook/react-native-fbsdk/issues/507 @zagoa 感谢您打开这个问题。我以当之无愧的侵略性跟进它。【参考方案2】:问题不在于 react-native-fbsdk,而在于 Facebook 或用户登录以连接到您的应用程序的浏览器,原因是每次您的应用程序通过浏览器或 Facebook 应用程序访问 Facebook 登录用户帐户已经登录的位置,这就是它不显示用户名或密码字段的原因。
要解决这个问题,用户必须从他/她登录的浏览器或 Facebook 退出(最初是为了获得应用权限)到您的应用,这样当用户回到您的应用时并选择 Facebook 登录选项,假设用户也退出了您的应用,然后他/她可以看到它重定向到 Facebook 或浏览器登录页面,其中包含用户名和密码字段。
【讨论】:
以上是关于使用 react-native-fbsdk 注销的正确方法的主要内容,如果未能解决你的问题,请参考以下文章
react-native-fbsdk 发布消息 facebook Graph API FBGraphRequest
让 react-native-fbsdk 与 CocoaPods 一起工作
如何在本机反应中使用 Facebook Messenger api
react-native-fbsdk / Facebook iOS SDK - 未定义不是对象(评估'LoginManager.logInWithReadPermissions')