我可以在用户登录时获取所有数据,但是当用户通过我的应用程序输入他的凭证(如电子邮件ID和密码)时,它会为名称,名字和姓氏提供空值,但我只能得到用户ID和电子邮件标识。
gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestProfile()
.requestEmail()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
private void signIn() {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
}
@Override
public void onStart() {
super.onStart();
OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient);
if (opr.isDone()) {
Log.d(TAG, "Got cached sign-in");
GoogleSignInResult result = opr.get();
handleSignInResult(result);
} else {
opr.setResultCallback(new ResultCallback<GoogleSignInResult>() {
@Override
public void onResult(GoogleSignInResult googleSignInResult) {
handleSignInResult(googleSignInResult);
}
});
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
handleSignInResult(result);
}
if(status==1) {
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}
void handleSignInResult(GoogleSignInResult result) {
if (result.isSuccess()) {
GoogleSignInAccount acct = result.getSignInAccount();
id=acct.getId();
googleId=id;
personPhotoUrl = acct.getPhotoUrl();
if(acct.getPhotoUrl() != null) {
imageUrl = acct.getPhotoUrl().toString();
}
else {
imageUrl="https://www.tineye.com/query/2abdd40717c034bf2dbcd6a0253b933d2a655920?size=160";
}
email = acct.getEmail();
name = acct.getDisplayName();
firstName = acct.getGivenName();
lastName = acct.getFamilyName();
details=new Details(name, firstName, lastName,email, birthday,imageUrl);
new GetDetails().execute();
if(details==null)
{
Intent intent = new Intent(this, LoginActivity.class);
startActivity(intent);
}
else
{
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
intent.putExtra("googleId", googleId);
startActivity(intent);
finish();
}
} else {
}
}