接入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 ...
最新文章
- IIS FTP部分文件上传报错451的原因及解决方法
- Android StateFlow详解
- java 1.8签名apk_给Android的APK程序签名和重新签名的方法
- Fragment标签页+OKHttp网络请求数据+MVP模式
- 宝塔面板连接阿里云服务器、及部署网页项目教程
- 31.Linux/Unix 系统编程手册(上) -- 线程:线程安全和每线程存储
- 自助任务平台WQ5.5.6源码对接微信带分类信息线报赏金赚悬赏猫驴赚网版本
- 大型央企云边协同建设方案及其借鉴意义分析
- zemax输出ies_ProSource光源模型分析和转换软件
- ROI是什么?电商ROI计算公式及理论及详解
- 信用卡积分兑换里程全攻略
- java 验证码突然不显示
- C语言实现有限状态机
- 【问题记录】centos7 nodejs better-SQLite3无法安装
- 6、RH850 F1 AD转换功能和配置
- Blender 3.5 全新逼真视觉效果
- 2019-ECfinal总结
- 今天是植树节,你愿意………………看我写的渣渣总结么?
- 天涯上的一篇恶搞武侠贴:如何成为大侠
- 药一点诊所管理软件_医院管理软件HIS
热门文章
- 网站https前安全锁有感叹号的解决方法
- 支付宝超级 App 的弹性动态架构实践
- C++11——右值引用
- 异或相关知识 xor (草稿)
- 企业邮箱怎么选,大公司青睐的企业邮箱都在这里~
- java课程体系_Java学习课程体系
- 计算机文字处理选择题,网络学院统考计算机文字处理选择题及答案-20210314081302.docx-原创力文档...
- oracle+m10-5,pchm10是oppo什么型号
- Linux执行curl报错:Protocol htttp not supported or disabled in libcurl
- Visual C++ Redistributable 一键安装All In One Runtimes