lla*_*rto 15 android google-profiles-api google-signin
试图从登录的个人资料中获取照片.但总是返回null.姓名和电子邮件返回值,只有照片有问题.
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestProfile()
.requestEmail()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(StartActivity.this)
.enableAutoManage(StartActivity.this, StartActivity.this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
acct = gResult.getSignInAccount();
String name = acct.getDisplayName(); //okay, value != null
String email = acct.getEmail(); //okay, value != null
Uri photoUri = acct.getPhotoUrl() //not okay, value == null
Run Code Online (Sandbox Code Playgroud)
为什么会这样?帐户已签名,电子邮件和姓名已获得,但照片始终失败.
BNK*_*BNK 19
根据Google的文档 - GoogleSignInAccount
public Uri getPhotoUrl()
获取已登录用户的照片网址.
返回
Google帐户的照片网址.如果配置了requestProfile()且用户确实拥有Google+个人资料图片,则仅为非null.
请检查您的Google帐户是否有Google+个人资料图片.
P/S:有时,如果已经创建了Google+个人资料图片,但是在您的设备中添加Google帐户之后,您可能需要从设备中删除现有的Google帐户,然后重新添加.
面临着将photoURL和 tokenID设为null的同样问题
正如@BNK 已经解释了可能是其他原因的原因
因此,只需将我的解决方案添加到其中,对于面临相同问题的人(希望这对他们有帮助)
使用以下代码时(用 kotlin 编写)
val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build()
Run Code Online (Sandbox Code Playgroud)
除了photoUrl和tokenId之外,我只能获取诸如 “DisplayName”、“Email”、“FamilyName”、“ID”之类的信息
所以我只是像这样向 GSO Builder添加了“requestIdToken”:
val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestIdToken(resources.getString(R.string.googleAccountWebClientID)) // This line did the magic for me
.build()
Run Code Online (Sandbox Code Playgroud)
因此,我能够获取所有信息以及 “idToken”和“photoUrl”
注意:请为requestIdToken()使用“WebClientId”,您可以从(https://console.developers.google.com/apis/credentials?project=)获取
| 归档时间: |
|
| 查看次数: |
10210 次 |
| 最近记录: |