首页 > 解决方案 > Android kitkat 4.4 的 React-Native Facebook 社交登录行为问题

问题描述

我已经集成了 facebook 登录,它在kitkat以上的所有版本上都可以正常工作。在kitkat中有一个奇怪的行为,当点击 Facebook 登录按钮时,它会在加载时将应用程序带到后台。

我用于登录的代码:

const doFacebookLogin = async dispatch => {

const { type, token } = await LoginManager.logInWithReadPermissions(["public_profile", "email",  "pages_show_list"])
.then(
 (result) => {
    if (result.isCancelled) {
    return dispatch({ type: FACEBOOK_LOGIN_CANCEL });

     } else {
      AccessToken.getCurrentAccessToken()
      .then(async (data) => {
        await setValue('fb_token', data.accessToken);
        let facebookApiData = await initUser(data.accessToken);
        await setValue('facebook_data', JSON.stringify(facebookApiData));
        dispatch({ type: FACEBOOK_LOGIN_PROCRESSING});
    //    let response =  await api.post('api/account/AddUser',JSON.parse('{"BrowserName":"MobileApp","BrowserVersion":"46",  "Email":"'+ facebookApiData.email +'","FacebookID":"'+facebookApiData.id+'","FirstName":"'+facebookApiData.first_name+'","MiddleName":"'+facebookApiData.middle_name+'",  "FullName": "'+facebookApiData.name+'", "Gender":"'+facebookApiData.gender+'","LastName":"'+facebookApiData.last_name+'", "ProfileLink":"'+facebookApiData.link+'","image":"'+facebookApiData.picture.data.url+'","Location":null}}'));
    //    await setValue('LoginId', response.LoginId);
        return dispatch({ type: FACEBOOK_LOGIN_SUCCESS, payload: data.accessToken });
     });
    }
 },
 (error) => {
    Alert.alert('Sign in error', error);
  },
);

if (type === "cancel") {
    return dispatch({ type: FACEBOOK_LOGIN_FAIL });
}

await setValue("fb_token", token);
return dispatch({ type: FACEBOOK_LOGIN_SUCCESS, payload: token });
};

附上截图

当点击登录 facebook 应用程序进入后台

我正在使用的依赖项

"dependencies": {
    "react": "16.4.0",
    "react-native": "0.55.4",
    "react-native-fbsdk": "^0.7"
  },

标签: androidfacebookreact-native

解决方案


推荐阅读