集成Sign in with Apple后,如何通过ASAuthorizationAppleIDCredential获取用户手机号?
Sign in with Apple 手机号获取与豁免申请指南
能不能通过Apple登录拿到用户手机号?
- 只有用户第一次用Apple登录你的应用时才有机会拿到:
- 你得在发起授权请求时,给
ASAuthorizationAppleIDRequest的requestedScopes加上对应权限,而且关键是用户得在Apple的登录弹窗里主动选择把手机号共享给你,这时候你才能从ASAuthorizationAppleIDCredential的phoneNumber字段里拿到。 - 要是用户第一次没同意共享,之后再登录就再也拿不到了,Apple不会给你二次获取的机会。
- 你得在发起授权请求时,给
- 另外,拿到的手机号是E.164格式的,比如
+8613xxxxxxxxx这种。
必须要手机号的情况下怎么处理?
方案一:登录后引导用户补填手机号
这是最稳妥、苹果认可的方式:
- 用户用Apple登录后,如果你没拿到手机号,直接弹出输入手机号的界面,让用户完成短信验证,然后把Apple登录返回的唯一
userID和这个手机号绑定起来。之后用户再用Apple登录,就不用再填手机号了,直接关联已绑定的账号就行。
方案二:申请豁免Apple登录
如果你的应用真的离了手机号就跑不起来(比如业务逻辑完全依赖手机号作为唯一主键,没有其他替代方案),可以试试申请豁免:
- 在App Store Connect提交审核的时候,选择需要豁免Sign in with Apple,然后把理由写清楚:
- 明确说明你的应用核心功能必须用手机号,短信验证是唯一的身份验证方式,手机号是用户的唯一标识;
- 说明已经接入的其他社交登录都能提供手机号,但Apple登录满足不了这个核心需求;
- 最好附上业务逻辑的截图或说明,让审核团队明白你的场景。
- 但豁免不是100%通过,优先试试方案一,实在不行再走豁免这条路。
内容的提问来源于stack exchange,提问作者Valentin Shamardin
相关产品推荐
相关产品推荐

