首页 > 解决方案 > getPhotoUrl() 或带有谷歌登录的个人资料图片

问题描述

我正在使用 Google Api 将google 登录集成到我的 Android 应用程序中。目前它工作得很好,我可以检索用户名和电子邮件,但我无法检索用户个人资料图片

当我尝试执行 account.getPhotoUrl();时,我总是得到“ null”。我在我的谷歌帐户中设置了个人资料图片,所以我很确定我应该得到与“ null”不同的东西。显然,photo_url 被声明为 Uri。

正如我在Google Developers上阅读的那样,我添加.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());
            }
        }

标签: androidlogingoogle-apigoogle-oauth

解决方案


可能会迟到,但我用毕加索找到了这个解决方案:

将此添加到您的 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);

推荐阅读