Android Google 登录 api 总是调用 onResume()

标签 android onresume google-signin

今天,我尝试实现 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()?

最佳答案

  1. 在您第一次登录后确定 -> 谷歌登录返回客户端 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
  1. 再次打开 Activity/应用程序 -> 在再次登录之前,您必须检查 token key 是否正在退出(是否已存储) -> 如果正在退出,则您不会再次登录,并且当然不会在监听器中连接

加油!

关于Android Google 登录 api 总是调用 onResume(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35966851/

相关文章:

java - 通过传递导致应用程序失败的值来一个接一个地调用异步任务以进行 Web 服务调用

安卓生命周期 Activity

android - 如何获取知道用户何时退出应用程序的方法代码

android - 将原生 Google 帐户选择器与 B2C 结合使用

java - 尝试为 Android 实现 google 登录时出现错误代码 12500

javascript - 如何正确等待 JavaScript 中异步函数的返回?

android - 多个dex文件定义Lcom/google/android/gms/internal/zzbqy;

java - 如何在Bazel BUILD中使用gradle的apply插件?

javascript - 如何控制 Android Web 浏览器中 html 输入控件周围的橙色突出显示?

Android生命周期——为什么不能在onPause(){ }中调用onResume()?