Android Google 登录 api 始终调用 onResume()

Android Google sign in api always call onResume()

今天,我正在尝试实施 Google 登录 API:https://developers.google.com/identity/sign-in/web/sign-in 并实现接口 GoogleApiClient.ConnectionCallbacks、GoogleApiClient.OnConnectionFailedListener 在 MainActivity(AppCompatActivity) 上。但是,第一次登录时一切正常。当我打开新的 Activity 并再次打开时,onConnected() 总是被调用。如何避免在 MainAcivity onResume 时调用 onConnected()?

你一定有

google_api_client.connect()

在您的 onStart() 方法中,它将一次又一次地连接它。您可以通过为 SignInButton 单击创建一个标志来修复它,并在连接 google_api_client.

之前在 onStart() 方法中检查该标志
  1. 第一次登录后确定 -> google 登录 return 客户端令牌密钥,您可以将其保存到客户端(使用 SharedPreference)。

您可以参考这段代码:

您需要将代码编辑为类似:

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestEmail()
                .requestIdToken("server_client_id") //to require server return Id token
                .requestServerAuthCode("server_client_id") //to require server return authCode
                .build();

GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
GoogleSignInAccount acct = result.getSignInAccount();
String personName = acct.getDisplayName();
String personEmail = acct.getEmail();
String personId = acct.getId();
Uri personPhoto = acct.getPhotoUrl();
String tokenKey = acct.getServerAuthCode(); //get authenticated code to save in client
  1. 再次打开 activity/app -> 在再次登录之前,您必须检查令牌密钥是否正在退出(是否已存储) -> 如果正在退出,则您不会再次登录并且当然已连接在听众中没有发生

加油!