使用多个帐户 React Native Google Signin

Har*_*mar 1 android google-signin react-native-android react-native-ios react-native-firebase

我有一个使用谷歌登录的本机应用程序。目前,我可以使用我的手机登录的谷歌帐户之一登录,但我需要为我的谷歌帐户堆栈中的另一个谷歌帐户执行OAuth,这是为了获取 API 访问权限 我需要二级帐户的 serverAuthToken

我用于谷歌登录的库 - https://github.com/react-native-community/google-signin

到目前为止我所做的:

const firebaseGoogleLogin = async () => {
    try {
      await GoogleSignin.hasPlayServices();
      const userInfo = await GoogleSignin.signIn();
      if (userInfo) {
        await storeToken(userInfo);
        // eslint-disable-next-line no-console
        console.log('User info retrieved during login', userInfo);
      }
      // create a new firebase credential with the token
      // eslint-disable-next-line max-len
      const credential = firebase.auth.GoogleAuthProvider.credential(userInfo.idToken, userInfo.accessToken);
      // login with credential
      // eslint-disable-next-line no-unused-vars
      const firebaseUserCredential = await firebase.auth().signInWithCredential(credential);
      console.log('Logged in')
    } catch (error) {
      if (error.code === statusCodes.SIGN_IN_CANCELLED) {
        console.log('sign in cancelled', error);
      } else if (error.code === statusCodes.IN_PROGRESS) {
        console.log('signin in progress error', error);
      } else if (error.code === statusCodes.PLAY_SERVICES_NOT_AVAILABLE) {
        console.log('play services are not available or outdated', error);
      } else {
        console.log('some other error occurred', error);
      }
    }
  };
Run Code Online (Sandbox Code Playgroud)

上面代码的结果:

这是我用我的原谷歌帐户登录的代码中,登录后在我触发播放服务模态中使用上述其他帐户,但加载秒模态关闭签署并随之关闭,显示我Logged in在日志,因为我已经登录了,在播放服务中自动绕过选择账户的选项

上述问题仅在android中出现ios即使使用帐户登录后似乎也很好

如果没有办法进行多帐户授权,我正在尝试进行黑客攻击,因为已经登录的帐户绕过了播放服务模式,我想在用户登录我的应用程序(进程级别)和在主活动里面,我还能有游戏服务吗?这是正确的做法吗!

小智 5

可能你已经解决了这个问题。我认为下面的方法可以解决您的问题。注销后调用此方法。

    signOut = async () => {
      try {
        await GoogleSignin.revokeAccess();
        await GoogleSignin.signOut();
        this.setState({ user: null }); // Remember to remove the user from your app's state as well
      } catch (error) {
        console.error(error);
      }
    };
Run Code Online (Sandbox Code Playgroud)