如何从Apple登录响应中获取用户名?
解决Apple登录无法获取用户名的问题
我之前也踩过一模一样的坑!Apple登录的name字段确实有不少容易忽略的细节,咱们一步步来捋清楚:
首次授权才会返回用户名:Apple的规则很明确——用户第一次给你的应用授权时,才会返回姓名相关字段。哪怕用户后来卸载重装应用,只要没重置过权限,都不会再返回
name。你提到的「停止使用Apple ID」其实就是重置权限,但要注意:重新授权时,必须确保请求里正确携带了namescope,同时前端要把Apple返回的user对象(包含姓名)完整传给后端,别只传id_token。核对scope的传递格式:确认你的授权请求里,
scope参数是用空格分隔的字符串,比如scope="name email",别写成数组或者其他格式。另外,去Apple开发者后台核对下应用配置,确保允许请求name这个scope(一般默认是开启的,但保险起见查一遍)。别只盯着id_token:很多人会犯这个错——
name字段不一定在id_token里!在authorization code flow的场景下,用户授权后,Apple会直接在响应体里返回一个user对象,里面包含firstName和lastName。如果你只解析了id_token,自然看不到姓名信息。测试时的正确操作:除了「停止使用Apple ID」,你还可以打开Apple ID设置→找到你的应用→「编辑权限」→关掉「全名」权限再重新开启,然后回到应用重新登录,这时候应该就能拿到姓名了。
内容的提问来源于stack exchange,提问作者user12125591
相关产品推荐
相关产品推荐

