我使用此(https://github.com/facebook/react-native-fbsdk)组件尝试使用Facebook为我的应用设置身份验证。我已成功配置它,因此登录按钮在两个平台上都为我提供了有效的令牌。
问题是应用程序records successfully logged user
并且摆脱它是非常棘手的(只有重新安装可以帮助)。此外,当您尝试更改在Android上的Facebook应用程序中记录用户时 - 它会出错:
'用户以不同的Facebook用户身份登录'
我总是收到this屏幕,而不是登录表单,我可以在其中输入其他凭据或至少更改帐户。
我使用提供的LoginManager.logInWithReadPermissions
进行登录,LoginManager.logOut
似乎什么都不做。
那么,如果登录不正确或者主-fb-app帐户发生了变化,我是否可以制作申请to give a user a choice
?
答案 0 :(得分:2)
这似乎是一个尚未解决的问题https://github.com/facebook/react-native-fbsdk/issues/536
尽您所能– 请对该问题进行投票,以便将来FB团队可以解决。
答案– 目前,该问题无法解决。
Dev解决方法– 如果您正在开发中并且需要测试多个用户,则可以使用其他登录者对另一个模拟器进行身份验证。
如果FB解决了此问题,请考虑编辑此答案
答案 1 :(得分:1)
在模拟器或设备上打开Safari,访问www.facebook.com。
您将看到您仍然使用原始帐户登录。只需退出那里,然后你就可以在你的本机应用程序中使用另一个。
答案 2 :(得分:1)
FBLogout = async () => {
try{
let tokenObj = await AccessToken.getCurrentAccessToken();
let current_access_token = tokenObj.accessToken.toString();
let logout = new GraphRequest(
"me/permissions/",
{
accessToken: current_access_token,
httpMethod: 'DELETE'
},
(error, result) => {
if (error) {
console.log('Error fetching data: ' + error.toString());
} else {
LoginManager.logOut();
}
});
new GraphRequestManager().addRequest(logout).start()
}catch(error}{
console.log(error);
}
}
答案 3 :(得分:0)
我正在提供android解决方案。
Android解决方案
这是一种解决方法。您必须更改官方软件包的Java代码。
打开以下文件。
react-native-fbsdk / android / src / main / java / com / facebook / reactnative / androidsdk / FBLoginManagerModule.java
@ReactMethod
public void logInWithReadPermissions(ReadableArray permissions, final Promise promise) {
final LoginManager loginManager = LoginManager.getInstance();
if(loginManager != null) loginManager.logOut(); // this is where the magic happens
loginManager.registerCallback(mCallbackManager, new
LoginManagerCallback(promise));
Activity activity = getCurrentActivity();
if (activity != null) {
loginManager.logInWithReadPermissions(
activity,reactArrayToJavaStringCollection(permissions));
}
}