android - 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());
}
}
解决方案
可能会迟到,但我用毕加索找到了这个解决方案:
将此添加到您的 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);
推荐阅读
- ionic-framework - Ionic3 视频集成在网络上不起作用
- javascript - 我想访问如下定义的对象数组
- elasticsearch - 带过滤器的 Elasticsearch 查询比不带过滤器的查询花费更多时间。为什么?
- arrays - 将数组元素分配给在堆内存中创建的数组
- jenkins - Jenkins BlueOcean 停留在“待处理的管道创建”。
- java - 为什么我得到“错误:无法找到或加载主类 mysql-connector-java-8.0.19.jar”?
- android - 如何设置 Android Studio 结构面板以反映项目中方法的实际顺序
- ldap - LDAP 配置后启动 NIFI 时出错
- snowflake-cloud-data-platform - 在雪花中创建外部表
- vue.js - 使用 Cypress 访问 VueJS 中的数据模型(应用程序操作)