Ich versuche, Google Sign-in
in meiner Android-App zu integrieren.Android - Google-Anmeldung getDisplayName() Geben Sie mir E-Mail statt Anzeigename für neues Konto hinzufügen
Hier ist mein Code:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PrefUtil.setTaskBarColored(this, R.color.treasure_black);
setContentView(R.layout.activity_login);
ButterKnife.bind(this);
loginHandler = new LoginHandler(this);
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestProfile()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.addApi(AppIndex.API).build();
}
@OnClick(R.id.btn_login)
public void OnLoginButtonClick() {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);
DialogClass.showDialog(this, "Signing In");
}
@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);
} else {
DialogClass.dismissDialog(this);
}
}
private void handleSignInResult(GoogleSignInResult result) {
if (result.isSuccess()) {
GoogleSignInAccount acct = result.getSignInAccount();
userName = acct.getDisplayName();
Log.i("userName",userName);
email = acct.getEmail();
Uri url=null;
if(acct.getPhotoUrl()!=null){
url = acct.getPhotoUrl();
}
String imageUrl=null;
if(url!=null && (!TextUtils.isEmpty(url.toString()))){
imageUrl=url.toString();
PrefUtil.putString(Constant.PreferenceKey.USER_IMAGE,imageUrl);
}
LoginRequestModel loginRequestModel = new LoginRequestModel(email, userName, imageUrl);
loginHandler.getUserDetails(loginRequestModel);
signOut();
} else {
DialogClass.dismissDialog(this);
}
}
Jetzt, wenn ich versuche, in meiner App Log-in, wenn ich ein vorkonfiguriertes Konto verwenden, indem es im AccountChooser
Dialog Auswahl, es funktioniert perfekt.
Wenn jedoch im AccountChooser
Dialog, verwende ich die „Konto hinzufügen“ Option der Account Chooser
und ein neues Konto hinzufügen, es gibt mir E-Mail in userName = acct.getDisplayName()
anstelle des Benutzer-Namen, und gebe ich null in url = acct.getPhotoUrl()
Aber wenn ich mich von meiner App abmelde und das gleiche Konto benutze, indem ich den SAME-Account über den Account-Chooser auswähle, funktioniert das perfekt, und ich kann nicht herausfinden, warum.
Jede Hilfe wird geschätzt.
Haben Sie das gelöst, oder warum passiert das? –
Kein Glück an dieser Front. Was ich getan habe, war zu überprüfen, ob ich den Namen oder die E-Mail von Google bekomme, und wenn ich eine E-Mail erhalten habe, habe ich die Kontoauswahl erneut geöffnet. –