这里吐槽一下苹果的开发文档,一切源于前段时间,公司的产品app(某知名资讯app)要接入苹果登陆(ios13发布以来,apple就流氓要求新上线的app,如果有第三方登陆的话,必须要接入appleid登陆),所以看了下苹果官方提供的appleid登陆的开发文档,看了一脸懵逼(好好学学我们国内的bat的开发文档啦),然后就想着上网搜一下其他人的做法,毕竟我们是代码的搬运工。谁知道一查,md,大家对苹果的开发文档也是各种猜的,猜着来做的。由于当时手头比较忙,又要急着上线(因为提审appstore,说不接入appleid登陆审核不过,不久前提交的另外一个却没问题,尿性),遂找了个相对能看明白一点的例子(例子也是猜着做的,写得又乱),我自己稍微整理一下,终于跑通了,和app也联调成功了(虽说成功了,但是心里一直没底),然后就做其他的需求了。

  跑着跑着,大概跑了半年,突然有一个新app(A),接入appleid登陆的时候,老是失败。刚好,还有另外一个app(B)也是,但是B有时候又成功,我在想,md,最近上线了那么多的新app,都没听说反馈有问题,肯定是app那边的开发者账号配置不对啊,但是又没有明确的证据和理由说服app的开发同事,没办法,只能自己后天慢慢调了。上网搜一两个钟,都没啥结果,这时候,只能靠自己的开发经验,调试手段以及重温apple的官方文档了,重温apple的官方文档,有鸟用。最终还是靠自己一步一步debug进源码,跟了很久,结合自己的开发经验,终于找出了问题。(这次问题的相关博客:https://www.cnblogs.com/ismallboy/p/11960958.html

  吐槽苹果苹果appleid登陆获取publicKey的接口文档,字段说明和实际的不一致。文档说kid字段是从开发者账号获取10个字符的标识符密钥(苹果开发账号里面确实有10位的密钥id的,叫做Key ID),但是调了接口(https://appleid.apple.com/auth/keys)发现,返回来的kid却是7位,真心理解不了。这个明明是获取publicKey(又不是privateKey)的接口,每个人(匿名,无需任何参数和校验)都可以调的,跟开发者账号有半毛钱关系啊,辣鸡苹果。接口的详情如下:

1.这个获取publicKey的接口的返回值,你的解释是这样的

ps.

(1).接口地址:https://developer.apple.com/documentation/signinwithapplerestapi/fetch_apple_s_public_key_for_verifying_token_signature

(2).接口返回数据结构解释doc地址:https://developer.apple.com/documentation/signinwithapplerestapi/jwkset/keys):

 

2.实际返回的数据结构是这样的:

 

版权声明:本文为ismallboy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ismallboy/p/12404547.html