You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Apple JS登录无法获取用户姓名数据求助

问题:Sign in with Apple授权后无法获取用户全名

我按照Apple官方文档配置了Sign in with Apple JS,已经在scope中传入了name email,但授权成功后没有返回预期的name字段。

预期返回数据:

{    
  "authorization": {      
    "code": "[CODE]",      
    "id_token": "[ID_TOKEN]",      
    "state": "[STATE]"    
  },    
  "user": {      
    "email": "[EMAIL]",      
    "name": {        
      "firstName": "[FIRST_NAME]",        
      "lastName": "[LAST_NAME]"      
    }    
  } 
}

实际返回数据:

{   
  "authorization": {       
    "code": "[CODE]",       
    "id_token": "[TOKEN]",       
    "state": "[DATE]"   
  },   
  "userData": {       
    "iss": "https://appleid.apple.com",       
    "aud": "[CLIENT ID]",       
    "exp": 1705410345,       
    "iat": 1705323945,       
    "sub": "001444.684e7c6273564b439b17498e791080d6.0659",       
    "c_hash": "a-ronQDp7RZtub_FJ-pceQ",       
    "email": "[MY EMAIL]",       
    "email_verified": "true",       
    "auth_time": 1705323945,       
    "nonce_supported": true   
  } 
}

我的配置代码:

nuxtApp.vueApp.use(VueAppleLogin, {      
  clientId: config.public.appleClientId,      
  scope: "name email",      
  redirectURI: "[REDIRECT URI]",      
  state: time.toString(),      
  usePopup: true,    
});

解决方案

1. 这是Apple的默认规则:仅首次授权返回name字段

Apple的Sign in with Apple机制里,只有用户第一次给你的应用授权时,才会返回name字段。如果用户之前已经授权过(哪怕是同一设备、同一Apple ID),后续所有授权请求都不会再返回name信息,哪怕你指定了name scope。

解决方法:

  • 去苹果设备的「设置」→「Apple ID」→「密码与安全性」→「使用Apple ID的应用」,找到你的应用并删除授权。
  • 重新发起登录授权,这次就能拿到name字段了。

2. 检查组件是否正确处理了返回数据

你用的VueAppleLogin组件在弹窗模式(usePopup: true)下,可能把user信息单独放在了回调参数里,而不是和authorization、解码后的id_token混在一起。比如:

// 检查组件的success回调
onSuccess(response) {
  // 可能response里有单独的user字段
  console.log(response.user); // 这里可能包含name和email
}

你的实际返回里只有authorization和userData(ID Token解码结果),大概率是组件只提取了这两部分,没把Apple返回的user对象带回来。

3. 持久化存储name字段

一旦拿到用户的name信息,一定要立刻存储到你的后端数据库里。因为后续用户登录时Apple不会再返回这个字段,你只能从自己的数据库里读取。

4. 确认scope参数是否正确传递

虽然你配置了scope: "name email",但要确认组件是否真的把这个参数传给了Apple的授权接口。可以打开浏览器开发者工具,查看授权请求的URL里是否包含scope=name%20email参数。


内容的提问来源于stack exchange,提问作者Azamat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 01:27:45