接入AppleID登录 go语言实现
版权声明:本文为博主原创文章,未经博主允许不得转载。 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语言实现相关推荐
- 个人开发者的项目如何接入支付宝登录功能(保姆级教学)(Java的后台为例,其他语言类似)
文章目录 前言 一.创建开发者账号和应用并配置 (1)创建应用 (2)接入产品并配置 (3)开发设置 二.接入SDK (1)下载SDK (2)写后台 代码解释 : getToken方法的code参数怎 ...
- 详解如何进行第三方App接入微信登录
微信登录接入 微信登录遵循协议Aouth2.0中的授权码模式 我们来看一下Aouth2.0中的授权码模式是怎么定义的: 授权码模式(authorization code)是功能最完整.流程最严密的授权 ...
- .netcore 极速接入第三方登录
新年新气象,趁着新年的喜庆,肝了十来天,终于发了第一版,希望大家喜欢. 如果有不喜欢看文字的童鞋,可以直接看下面的地址体验一下: Github: https://github.com/mrhuo/Mr ...
- 易语言php支付宝,支付宝填表登录易语言源码
支付宝填表登录易语言源码 @MS_晨星天宇.版本 2 .支持库 spec .支持库 HtmlView .程序集 窗口程序集_窗口1 .子程序 _按钮1_被单击 调试输出 (开始登录 (超文本浏览框1, ...
- Unity:Firebase接入Apple登录
Unity:Firebase接入Apple登录 开启Firebase的登录方式 设置Apple的后台信息 从Assets Store下载 Singn In With Apple Xcode设置 添加A ...
- Android接入三方登录——QQ、微信、Facebook、Twitter
Android接入三方登录--QQ.微信.Facebook.Twitter 避坑指南 facebook错误1: facebook错误2: QQ 微信 Facebook Twitter 补充: 避坑指南 ...
- ubuntu远程访问win7登录后语言为繁体字的解决办法
用ubuntu远程访问win7后,发现登录后语言为繁体字,这个还是比较烦人的,网上找到了一个解决办法,在此记录一下.以后肯定还会再用到. 在win7电脑上进行修改一下注册表: 在终端服务器上单击 开始 ...
- (unity)新手接入Facebook登录,分享以及google登录,Android,IOS,OC接入篇
最近接Android,IOS的Facebook登录,分享 以及Google登录,分享流程以及遇到的问题整理. 一. Android接入 google登录 第一步,前往 [ firebase] http ...
- CocosCreator微信小游戏接入微信登录获取微信名、头像、经纬度等信息
前言 微信小游戏接入微信登录还是很简单的,不像原生平台开发,还需要提供appid,appsecret等信息,并有一系列的和微信平台的交互,才能最终授权成功. 下面TS代码演示了,老的接入流程. exp ...
最新文章
- arraylist如何检测某一元素是否为空_我们应该如何理解Java集合框架的关键知识点?...
- 013,spring boot下JedisCluster客户端的配置,连接Redis集群
- 可转债数据一览表集思录_可转债股票数据一览表
- java锁_Java锁
- 疑似华为Mate X2通过3C认证:麒麟9000还是很悬...
- 【1291】数据结构上机测试4.1:二叉树的遍历与应用1 SDUTOJ
- numpy无法导入的问题--ModuleNotFoundError: No module named 'numpy'总结
- CANoe下载地址以及CAN Demo 16的下载与激活,并附录所有CANoe软件版本
- OSAL工作机制分析
- Caused by: org.greenrobot.eventbus.EventBusException: Subscriber class com.xxx.app.ui.activity
- “水晶糖果字体”练习
- Haproxy 使用 sni 配置 https 多域名代理 SSL_ERROR_RX_RECORD_TOO_LONG
- 破解庞加莱猜想数学家曾四五年未发表论文
- 吴思进——复杂美创始人首席执行官
- 习题4-9 打印菱形图案 (15 分)
- 利用计算机设计产品,计算机在产品设计的应用论文
- 亚马逊账户违规了?如何自查
- 【音乐理论】音与音高 ( 音区 | 小字一组 | 小字组 | 大字组 )
- 我的Qt作品(7)使用Qt+OpenCV实现图像轮廓提取,再用三阶贝塞尔曲线拟合成光滑线条/多边形拟合
- 12、go语言的duck typing