使用 Apple 登录(在网站上)returns 一个空的用户对象

Sign In with Apple (on a website) returns an empty user object

我已经在我的网站上实施了 Sign In with Apple。但问题是它只适用于我开发者的 Apple ID。

我尝试在同一环境中使用我的个人 Apple ID,登录过程也 运行 正常。

但是,当真实用户尝试使用此功能时,Apple returns 错误响应 user 字段为空 JSON,如下所示:

{  
  "state": "20cadefd",  
  "code": "c0f4d18d62a124c9482dec72e9b647f6d.0.nwus.L-JUin6NT_fZPDn4B8oYaA",  
  "user" => "{}"  
}  

如您所见,用户对象是空的。

查询 https://appleid.apple.com/auth/token 也返回没有电子邮件声明。另据报道,用户看不到通常可以共享或隐藏其真实电子邮件的步骤。

我在这里错过了什么?

* 更新 *

至于id_token,我可以得到它并解码,它给出了以下内容:

{
  "iss": "https://appleid.apple.com",
  "aud": "<SERVICE ID>",
  "exp": 1578056278,
  "iat": 1578055678,
  "sub": "<SUB ID>",
  "at_hash": "rFEqY8BcGQVfxwFxgAsWsA",
  "auth_time": 1578055675
}

仍然没有电子邮件字段

* 更新 *

经过进一步测试,"user" 字段似乎只有在用户使用 Touch ID 登录时才为空。他用密码的时候就没事了

我在网站上实施 Sign In with Apple 时遇到了一个非常相似的问题,我找到了一个适合我的解决方案。

当我在桌面浏览器上登录时一切正常,但当我在移动设备上登录并使用触摸 ID 时,Apple 甚至在第一次请求时为用户字段返回一个空 JSON - 即使我确保从我的 appleid 帐户中的授权应用程序中删除我的网站。

在 URL 中编码多个 scope 属性的方式存在问题:name+email 不起作用,但 name%20email 起作用。