Android getPhotoUrl()或谷歌登录的个人资料图片
我正在使用谷歌Api将谷歌登录集成到我的Android应用程序中。 目前,它运行得非常好,我能够检索用户名和电子邮件,但是我无法检索用户配置文件pic 当我尝试执行Android getPhotoUrl()或谷歌登录的个人资料图片,android,login,google-api,google-oauth,Android,Login,Google Api,Google Oauth,我正在使用谷歌Api将谷歌登录集成到我的Android应用程序中。 目前,它运行得非常好,我能够检索用户名和电子邮件,但是我无法检索用户配置文件pic 当我尝试执行account.getPhotoUrl()时,我总是得到“null”。 我在我的google帐户中设置了个人资料图片,所以我很确定我应该得到与“null”不同的东西。 显然,photo_url被声明为Uri 当我继续阅读时,我添加了.requestProfile()来检索有关用户配置文件的信息,但是对于配置文件照片,我总是得到null
account.getPhotoUrl()时代码>,我总是得到“null
”。
我在我的google帐户中设置了个人资料图片,所以我很确定我应该得到与“null
”不同的东西。
显然,photo_url被声明为Uri
当我继续阅读时,我添加了.requestProfile()
来检索有关用户配置文件的信息,但是对于配置文件照片,我总是得到null
我怎样才能解决这个问题
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestProfile()
.build();
mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
....
private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
try {
GoogleSignInAccount account = completedTask.getResult(ApiException.class);
googleName = account.getDisplayName();
goofleEmail = account.getEmail();
photo_url = account.getPhotoUrl();
Log.w(TAG, "test url" + photo_url);
mainPresenter.dataSocialAPI(googleName, goofleEmail, userType);
signOut();
} catch (ApiException e) {
Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
}
}
GoogleSignInOptions gso=新的GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT\u登录)
.requestEmail()
.requestProfile()
.build();
mGoogleSignInClient=GoogleSignIn.getClient(this,gso);
....
私有void handleSignInResult(任务完成任务){
试一试{
GoogleSignInAccount account=completedTask.getResult(ApiException.class);
googleName=account.getDisplayName();
goofleEmail=account.getEmail();
photo_url=account.getPhotoUrl();
Log.w(标签,“测试url”+照片url);
dataSocialAPI(googleName、goofleEmail、userType);
签出();
}捕获(APIE){
Log.w(标记“signInResult:failed code=“+e.getStatusCode());
}
}
可能会迟到,但我在毕加索那里找到了这个解决方案:
将其添加到“依赖项”下的app/build.grade中
implementation 'com.squareup.picasso:picasso:2.5.2'
在您的活动中:
Uri personPhoto = acct.getPhotoUrl();
photo = root.findViewById(R.id.accPhoto);
Picasso.with(this).load(personPhoto).into(photo);
我发现我可以使用这个URL:但结果是一个JSON内容。如何从JSON响应中直接检索URL?我仍然从getPhotoUrl()中获取“null”;我在google上搜索了很多,但没有找到任何合适的解释。当然,我用于测试的google帐户与google+系统关联,以下是链接: