Android getPhotoUrl()或谷歌登录的个人资料图片

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

我正在使用谷歌Api将谷歌登录集成到我的Android应用程序中。 目前,它运行得非常好,我能够检索用户名和电子邮件,但是我无法检索用户配置文件pic

当我尝试执行
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+系统关联,以下是链接: