如何在Cognito用户池属性映射中获取Facebook全尺寸头像
解决Cognito映射Facebook头像分辨率的问题
嘿,我来帮你搞定这个问题!Cognito本身没法直接指定Facebook返回的头像分辨率,因为默认请求的picture字段就是Facebook给的小尺寸图,但我们可以通过两种方式调整:
方法1:修改Cognito向Facebook请求的用户信息字段
这是最直接的方式,不需要额外代码:
- 登录AWS控制台,打开你的Cognito用户池
- 切换到身份提供者标签,选择你配置的Facebook身份提供者
- 找到用户信息字段(部分控制台可能叫"要检索的属性")这一项,把原来的
picture替换成带尺寸参数的格式,比如:
你可以把200改成任何你需要的尺寸(比如400、500),Facebook会返回对应大小的头像URLpicture.width(200).height(200) - 保存配置后,新登录的用户就能获取到指定分辨率的头像了
方法2:用Lambda触发器动态更新头像
如果已经有用户在系统里,或者需要更灵活的控制,可以用Cognito的Lambda触发器:
- 创建一个Post Authentication类型的Lambda函数
- 在函数里,从用户的身份信息中提取Facebook的用户ID(可以通过
event.request.userAttributes里关联的身份字段获取,比如你之前存储的custom:facebook_id) - 构造高分辨率的头像URL:
https://graph.facebook.com/{facebook-user-id}/picture?width=200&height=200 - 调用Cognito的
AdminUpdateUserAttributesAPI,把用户的Picture属性更新成这个新URL - 把这个Lambda函数关联到你的Cognito用户池的Post Authentication触发器上
注意:第二种方法需要确保你的Lambda有足够的权限调用Cognito的更新用户属性API,并且你需要正确获取到用户的Facebook ID。
另外补充一下,Facebook返回的picture字段默认尺寸确实是50x50,所以必须明确指定尺寸参数才能拿到更大的图。
内容的提问来源于stack exchange,提问作者niqui
相关产品推荐
相关产品推荐

