这似乎是一项基本功能,但在遵循登录教程之后,它仅在我选择已在设备上注册的帐户时才有效。
选择“使用另一个帐户”并完成一些步骤进行身份验证后,它会丢失回调结果,(onActivityResult
未调用)。
我使用GoogleSignInOptions
:没有发生异常,我无法添加任何侦听器来检测异常。
但是,GoogleApiClient
工作正常,但有一些已弃用的方法,因此我决定切换到GoogleSignInOptions
以避免弃用问题。
初始化:
googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build();
googleSignInClient = GoogleSignIn.getClient(this, googleSignInOptions);
点击时:
signInButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
signIn();
}
});
private void signIn() {
googleSignInClient.signOut();
Intent signInIntent = googleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, 123);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 123 && data != null) {
handleSignInResult(data);
}
}
private void handleSignInResult(Intent data) {
Task<GoogleSignInAccount> signInTask = GoogleSignIn.getSignedInAccountFromIntent(data);
try {
GoogleSignInAccount googleSignInAccount = signInTask.getResult(ApiException.class);
if (googleSignInAccount != null) {
updateUI(googleSignInAccount);
}
} catch (ApiException e) {
e.printStackTrace();
}
}
任何人都可以帮忙吗?