苹果APP发布过程中,如果使用了微信登录,那么就必须使用苹果登录,不然是无法通过苹果认证上架的!

来自–本人残酷的上传经验

Uniapp的说明:https://ask.dcloud.net.cn/article/id-36651__page-1

本教程参考于:https://www.freesion.com/article/85681195137/

分析步骤

  • APP给苹果服务器发送登录需求
  • 苹果服务器给APP发送数据
  • APP将数据返回给后台
  • 后台进行校验

这里附上,苹果给前端的值

{
  "errMsg": "getUserInfo:ok",
  "userInfo": {
    "openId": "001540.41484a85a1684669983f013affd74ca6.0611",
    "fullName": {
      "familyName": "Wu",
      "giveName": "Yan",
      "givenName": "Yan"
    },
    "email": "x5nqhn4mvj@privaterelay.appleid.com",
    "authorizationCode": "cb1ce78d4e7ea4d94a28f34b78a138c05.0.rrvuq.kS_CJAPw7vQkgk1QBaxV3A",
    "identityToken": "eyJraWQiOiJZdXlYb1kiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2FwcGxlaWQuYXBwbGUuY29tIiwiYXVkIjoiY29tLmhlZmVpeHVubGlhby56aGVubGlhbyIsImV4cCI6MTYzNzEyOTQ2MywiaWF0IjoxNjM3MDQzMDYzLCJzdWIiOiIwMDE1NDAuNDE0ODRhODVhMTY4NDY2OTk4M2YwMTNhZmZkNzRjYTYuMDYxMSIsImNfaGFzaCI6Ik0xMlJWZkhVR0VVdVR4T3hoY3dFa0EiLCJlbWFpbCI6Ing1bnFobjRtdmpAcHJpdmF0ZXJlbGF5LmFwcGxlaWQuY29tIiwiZW1haWxfdmVyaWZpZWQiOiJ0cnVlIiwiaXNfcHJpdmF0ZV9lbWFpbCI6InRydWUiLCJhdXRoX3RpbWUiOjE2MzcwNDMwNjMsIm5vbmNlX3N1cHBvcnRlZCI6dHJ1ZSwicmVhbF91c2VyX3N0YXR1cyI6Mn0.jlUvockL_NHBImswDaX0E_PZKf-BzhUUVxdNmdJ98C7ob8lv9zUltw4Mk1Ua74Ay_LrExPkOxtu4Db89AnRowmZL69-JvJu9oWpKmi03rjjarD7gg1V-XoTHlbT6yCjPVBL-5OjG6WJ5Z9GkmSDT-BgpXQevzhfPdkVNsi-fLRMJEO5oKR8pM9INPnT3kzAGbeur9RGR-jCYBv-5kXWi4oD0q_klw-of4Pyw4a9nrvcOUqdUKSrK8RyeL-O5cegDBRstmXieTNRkZFPay8TVG9oFgNhY28Zw5vdxw6zx5t2Ep-kXD0Is6lzy2Y0054kkoqpncNn7GR0OyAs0FBFlZQ",
    "realUserStatus": 2
  }
}

说明:IdentityToken 解析出的email应该是与token解析是一致的。

下面苹果传给Uniapp客户端的信息:

1、appleInfo

属性类型说明
userString苹果用户唯一标识符
stateString验证信息状态
emailString用户共享的可选电子邮件
fullNameObject用户共享的可选全名
authorizationCodeString验证数据
identityTokenStringWeb令牌(JWT)
realUserStatusNumber标识用户是否为真实的人 0:当前平台不支持,忽略该值;1:无法确认;2:用户真实性非常高
scopeString返回信息作用域

2、fullName

属性类型说明
namePrefixString名字前缀,头衔、敬称
givenNameString名字
middleNameString中间名
familyNameString
nameSuffixString名字后缀,学位、荣誉
nickNameString昵称

我们Java代码级别的处理,局限于identityToken 进行校验即可。identityToken 处理的结果如下:

字段名说明
iss签发机构网址
audbundle id
expint 过期时间戳
iat签发时间
subuser id
nouce客户端发出请求时携带的随机串,用于对照
c_hash一段哈希
emailemail
email_verifiedemail 是否确认了
is_private_email是否为 private email
auth_timeemail 授权时间
JWT里面参数信息