版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tptpppp/article/details/99288426

概述

本文是对AppleID登录接入的相关总结,希望对其他人能有帮助。

苹果在其WWDC19大会上提出了"Sign In with Apple"的概念,类似于微信一键登录,但也有些区别:

  • 微信存在一个UnionID、OpenID的概念,苹果只有一个AppleID;
  • 微信直接通过api就能拿到用户信息,而苹果拿到的是一个jwt,需要进行加解密。

相关参数

根据官方文档(链接见文末),AppleID登录遵循OAuth2.0协议,主要分为两步:1. 用户授权后获取code;2. 通过code换取token。以下流程在网页端和App端存在一定差异,主要是client_id和redirect_url不同,这里以网页端为例进行说明。

在发起流程前,你需要准备以下参数:

  • Team ID,10个字节的字符串,可以在苹果账户后台中看到,位于右上角

  • Key Id,10个字节的字符串,可以在苹果账户后台中看到

  • Client ID,这里要注意与code授权的平台保持一致。注意网页端与app端的差异,参见遇到的问题一

  • Private Key,一个.p8文件,只能从苹果官网下载一次

  • Redirect Url,code授权的回调url,app端可以不填

除Redirect Url外,其他几个参数主要用于生成client_secret。根据官方文档,client_secret是如下jwt采用ES256加密的结果:

{"alg": "ES256",                         // jwt加密算法,固定值"kid": "ABC123DEFG"                     // Key Id
}
{"iss": "DEF123GHIJ",                    // Team ID"iat": 1437179036,                      // jwt生成时间,精确到秒"exp": 1493298100,                      // jwt过期时间,unix时间戳,精确到秒"aud": "https://appleid.apple.com",     // 授权给此域名,固定值"sub": "com.mytest.app"                 // Client ID
}

golang实现

参见代码

遇到的问题

问题一 网页端/App端Client ID不同

  • 现象: {“error”:“invalid_grant”}
  • 原因:client_id填写错误

网页端流程走通后,在调试App端的过程中,总是报错invalid_grant,后来发现是client_id填错了。网页授权登录填写的是Services Id,App端登录需要的是AppId,参见链接

参考

  • 官方文档
  • OAuth 2.0,主要就是code、token、refresh_token的关系
  • jwt
  • jwt-go
  • 参考一
  • 参考二

接入AppleID登录 go语言实现相关推荐

  1. 个人开发者的项目如何接入支付宝登录功能(保姆级教学)(Java的后台为例,其他语言类似)

    文章目录 前言 一.创建开发者账号和应用并配置 (1)创建应用 (2)接入产品并配置 (3)开发设置 二.接入SDK (1)下载SDK (2)写后台 代码解释 : getToken方法的code参数怎 ...

  2. 详解如何进行第三方App接入微信登录

    微信登录接入 微信登录遵循协议Aouth2.0中的授权码模式 我们来看一下Aouth2.0中的授权码模式是怎么定义的: 授权码模式(authorization code)是功能最完整.流程最严密的授权 ...

  3. .netcore 极速接入第三方登录

    新年新气象,趁着新年的喜庆,肝了十来天,终于发了第一版,希望大家喜欢. 如果有不喜欢看文字的童鞋,可以直接看下面的地址体验一下: Github: https://github.com/mrhuo/Mr ...

  4. 易语言php支付宝,支付宝填表登录易语言源码

    支付宝填表登录易语言源码 @MS_晨星天宇.版本 2 .支持库 spec .支持库 HtmlView .程序集 窗口程序集_窗口1 .子程序 _按钮1_被单击 调试输出 (开始登录 (超文本浏览框1, ...

  5. Unity:Firebase接入Apple登录

    Unity:Firebase接入Apple登录 开启Firebase的登录方式 设置Apple的后台信息 从Assets Store下载 Singn In With Apple Xcode设置 添加A ...

  6. Android接入三方登录——QQ、微信、Facebook、Twitter

    Android接入三方登录--QQ.微信.Facebook.Twitter 避坑指南 facebook错误1: facebook错误2: QQ 微信 Facebook Twitter 补充: 避坑指南 ...

  7. ubuntu远程访问win7登录后语言为繁体字的解决办法

    用ubuntu远程访问win7后,发现登录后语言为繁体字,这个还是比较烦人的,网上找到了一个解决办法,在此记录一下.以后肯定还会再用到. 在win7电脑上进行修改一下注册表: 在终端服务器上单击 开始 ...

  8. (unity)新手接入Facebook登录,分享以及google登录,Android,IOS,OC接入篇

    最近接Android,IOS的Facebook登录,分享 以及Google登录,分享流程以及遇到的问题整理. 一. Android接入 google登录 第一步,前往 [ firebase] http ...

  9. CocosCreator微信小游戏接入微信登录获取微信名、头像、经纬度等信息

    前言 微信小游戏接入微信登录还是很简单的,不像原生平台开发,还需要提供appid,appsecret等信息,并有一系列的和微信平台的交互,才能最终授权成功. 下面TS代码演示了,老的接入流程. exp ...

最新文章

  1. arraylist如何检测某一元素是否为空_我们应该如何理解Java集合框架的关键知识点?...
  2. 013,spring boot下JedisCluster客户端的配置,连接Redis集群
  3. 可转债数据一览表集思录_可转债股票数据一览表
  4. java锁_Java锁
  5. 疑似华为Mate X2通过3C认证:麒麟9000还是很悬...
  6. 【1291】数据结构上机测试4.1:二叉树的遍历与应用1 SDUTOJ
  7. numpy无法导入的问题--ModuleNotFoundError: No module named 'numpy'总结
  8. CANoe下载地址以及CAN Demo 16的下载与激活,并附录所有CANoe软件版本
  9. OSAL工作机制分析
  10. Caused by: org.greenrobot.eventbus.EventBusException: Subscriber class com.xxx.app.ui.activity
  11. “水晶糖果字体”练习
  12. Haproxy 使用 sni 配置 https 多域名代理 SSL_ERROR_RX_RECORD_TOO_LONG
  13. 破解庞加莱猜想数学家曾四五年未发表论文
  14. 吴思进——复杂美创始人首席执行官
  15. 习题4-9 打印菱形图案 (15 分)
  16. 利用计算机设计产品,计算机在产品设计的应用论文
  17. 亚马逊账户违规了?如何自查
  18. 【音乐理论】音与音高 ( 音区 | 小字一组 | 小字组 | 大字组 )
  19. 我的Qt作品(7)使用Qt+OpenCV实现图像轮廓提取,再用三阶贝塞尔曲线拟合成光滑线条/多边形拟合
  20. 12、go语言的duck typing

热门文章

  1. 当eclipse工程出现红色感叹号的解决方法
  2. 使用数组解决阶梯设置问题
  3. WiFi模组的春天与噩梦
  4. Debian/Ubuntu安装带VULKAN的NCNN库
  5. 魅族路由器极速版刷机_好先生追剧神器 魅族路由器极速版评测
  6. 出现了一个问题,导致程序停止正常工作。如果有可用的解决方案,windows 将关闭程序并通知你
  7. Linux简明系统维护手册
  8. ccfcsp题库c语言,2019年CCF认证第一轮CSP-S信息学C++试题答案A卷
  9. 2020-11-03Paderborn大学轴承数据集
  10. Aplication的作用