今天,我尝试实现 Google Sign in API:https://developers.google.com/identity/sign-in/web/sign-in 并实现接口(interface) GoogleApiClient.ConnectionCallbacks,MainActivity(AppCompatActivity) 上的 GoogleApiClient.OnConnectionFailedListener。但是,第一次登录时一切正常。当我打开新 Activity 并再次返回时,onConnected() 总是被调用。如何避免在 MainAcivity onResume 时调用 onConnected()?
最佳答案
- 在您第一次登录后确定 -> 谷歌登录返回客户端 token key ,您可以将其保存到客户端(使用 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
- 再次打开 Activity/应用程序 -> 在再次登录之前,您必须检查 token key 是否正在退出(是否已存储) -> 如果正在退出,则您不会再次登录,并且当然不会在监听器中连接
加油!
关于Android Google 登录 api 总是调用 onResume(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35966851/