GooglePlus已弃用,如何获取用户原始尺寸个人资料照片?
解答
关于Directory API获取原始尺寸照片
Google Admin SDK Directory API的users.photos.get接口确实仅返回固定96x96像素的缩略图,没有参数或方法可以获取更大尺寸或原始尺寸的用户照片,这是该API的设计限制。
替代方案
1. Google People API
这是Google官方推荐的替代Google+ API的用户资料接口,支持获取不同尺寸的个人资料照片,包括接近原始尺寸的大图。
- 权限要求:根据场景不同申请对应OAuth2权限,用户授权场景需
profile或https://www.googleapis.com/auth/userinfo.profile;域管理员批量获取域内用户资料时,可使用域范围授权,搭配https://www.googleapis.com/auth/directory.users.readonly或https://www.googleapis.com/auth/people.readonly权限。 - 获取照片方式:调用
people.get接口并指定person_fields=photos,返回的photos数组中包含照片URL,该URL支持通过sz参数调整尺寸(例如sz=2048获取2048x2048像素的照片,最大支持到2048像素,实际尺寸取决于用户上传的原始照片大小)。 - Ruby代码示例:
require 'google/apis/people_v1' require 'googleauth' # 初始化客户端 people_service = Google::Apis::PeopleV1::PeopleServiceService.new people_service.authorization = Google::Auth::UserRefreshCredentials.new( client_id: 'YOUR_CLIENT_ID', client_secret: 'YOUR_CLIENT_SECRET', refresh_token: 'USER_REFRESH_TOKEN', scope: ['profile'] ) # 获取当前用户资料照片 response = people_service.get_person('people/me', person_fields: 'photos') photo_url = response.photos.first.url # 修改sz参数获取2048尺寸的照片 large_photo_url = photo_url.gsub(/sz=\d+/, 'sz=2048')
2. 公共头像URL(限公开场景)
如果用户的个人资料头像设置为公开,可直接构造URL获取不同尺寸的照片,无需调用API:
- 格式:
https://www.google.com/s2/photos/profile/{USER_EMAIL}?sz={SIZE} - 示例:
https://www.google.com/s2/photos/profile/user@example.com?sz=2048 - 注意:若用户设置头像为私有,该URL将返回默认占位图,无法访问实际头像。
3. 自主存储用户照片
如果需要完全确保获取原始尺寸且不受Google API限制,最可靠的方案是让用户直接将头像上传至你的服务并存储,后续从自有存储系统读取,彻底摆脱对Google服务的依赖。
内容的提问来源于stack exchange,提问作者VinnyQ77
相关产品推荐
相关产品推荐

