如何在Apple登录响应中查找隐藏或显示邮箱参数(附登录弹窗截图)
Apple登录响应中邮箱参数的获取与判断方法
一、前端(客户端)直接获取
不管是iOS端用AuthenticationServices框架,还是Web端用Apple ID JS SDK,登录成功的响应里都能拿到邮箱相关参数:
- 如果用户选了共享真实邮箱,
email字段就是用户的真实邮箱地址;如果选了隐藏邮箱,email是Apple生成的代理邮箱(格式类似xxx@privaterelay.appleid.com) - 还有个直接标记状态的字段:Web端是
is_private_email,iOS端是privateEmail,直接判断是否为隐藏邮箱 - Web端代码示例:
AppleID.auth.signIn().then((response) => { const userInfo = JSON.parse(response.user); console.log("用户邮箱:", response.email); console.log("是否为隐藏邮箱:", userInfo.is_private_email === "true"); });
二、后端解码令牌获取
前端会把登录后的id_token传给后端,后端解码这个JWT就能拿到完整的邮箱信息:
- 用对应语言的JWT工具库(比如Node.js的
jsonwebtoken、Java的JJWT)解码id_token,Payload里包含:email:真实/代理邮箱地址is_private_email:布尔值,直接标识是否是隐藏邮箱email_verified:隐藏邮箱默认是true,真实邮箱则根据用户验证状态而定
- Node.js解码示例:
const jwt = require('jsonwebtoken'); const decodedToken = jwt.decode(idToken, { complete: true }); const payload = decodedToken.payload; console.log("邮箱:", payload.email); console.log("是否隐藏:", payload.is_private_email);
三、注意点
- 只有首次登录时,前端才会返回
email字段;后续登录如果用户没改隐私设置,前端可能拿不到,得靠后端解码id_token获取 - Apple生成的代理邮箱和你的应用绑定,用户可以在Apple ID管理页查看或删除这些代理地址
内容的提问来源于stack exchange,提问作者krupali patel
相关产品推荐
相关产品推荐

