大佬教程收集整理的这篇文章主要介绍了Android – Google登录getDisplayName()在新帐户添加时为我提供电子邮件而不是显示名称,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的代码:
@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_iR_250_11845@AGE,imageUrl); } LoginrequestModel loginrequestModel = new LoginrequestModel(email,userName,imageUrl); loginHandler.getUserDetails(loginrequestModel); signOut(); } else { DialogClass.dismissDialog(this); } }
现在,当我尝试登录我的应用程序时,如果我通过在AccountChooser对话框中选择它来使用预先配置的帐户,则它可以正常运行.
但是,如果在AccountChooser对话框中,我使用帐户选择器的“添加帐户”选项并添加一个新帐户,它会在userName = acct.getDisplayName()中给我发送电子邮件,而不是用户名,并给我null在url = acct.getPhotoUrl()中
但是,如果我通过帐户选择器选择相同的帐户注销我的应用程序并使用相同的帐户,它可以正常工作,我无法弄清楚原因.
任何帮助将不胜感激.
GoogleSignInOptions gso = new GoogleSignInOptions.builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestemail() .requestProfile() .requestIdToken('Your server client id') .build();
另请参阅此Google Signin returns display name as null only when Add account in the flow
谢谢.
以上是大佬教程为你收集整理的Android – Google登录getDisplayName()在新帐户添加时为我提供电子邮件而不是显示名称全部内容,希望文章能够帮你解决Android – Google登录getDisplayName()在新帐户添加时为我提供电子邮件而不是显示名称所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。