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() 方法中检查该标志
- 第一次登录后确定 -> 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
- 再次打开 activity/app -> 在再次登录之前,您必须检查令牌密钥是否正在退出(是否已存储) -> 如果正在退出,则您不会再次登录并且当然已连接在听众中没有发生
加油!
今天,我正在尝试实施 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() 方法中检查该标志- 第一次登录后确定 -> 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
- 再次打开 activity/app -> 在再次登录之前,您必须检查令牌密钥是否正在退出(是否已存储) -> 如果正在退出,则您不会再次登录并且当然已连接在听众中没有发生
加油!