版权声明:本文为博主原创文章,未经博主允许不得转载。 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. IIS FTP部分文件上传报错451的原因及解决方法
  2. Android StateFlow详解
  3. java 1.8签名apk_给Android的APK程序签名和重新签名的方法
  4. Fragment标签页+OKHttp网络请求数据+MVP模式
  5. 宝塔面板连接阿里云服务器、及部署网页项目教程
  6. 31.Linux/Unix 系统编程手册(上) -- 线程:线程安全和每线程存储
  7. 自助任务平台WQ5.5.6源码对接微信带分类信息线报赏金赚悬赏猫驴赚网版本
  8. 大型央企云边协同建设方案及其借鉴意义分析
  9. zemax输出ies_ProSource光源模型分析和转换软件
  10. ROI是什么?电商ROI计算公式及理论及详解
  11. 信用卡积分兑换里程全攻略
  12. java 验证码突然不显示
  13. C语言实现有限状态机
  14. 【问题记录】centos7 nodejs better-SQLite3无法安装
  15. 6、RH850 F1 AD转换功能和配置
  16. Blender 3.5 全新逼真视觉效果
  17. 2019-ECfinal总结
  18. 今天是植树节,你愿意………………看我写的渣渣总结么?
  19. 天涯上的一篇恶搞武侠贴:如何成为大侠
  20. 药一点诊所管理软件_医院管理软件HIS

热门文章

  1. 网站https前安全锁有感叹号的解决方法
  2. 支付宝超级 App 的弹性动态架构实践
  3. C++11——右值引用
  4. 异或相关知识 xor (草稿)
  5. 企业邮箱怎么选,大公司青睐的企业邮箱都在这里~
  6. java课程体系_Java学习课程体系
  7. 计算机文字处理选择题,网络学院统考计算机文字处理选择题及答案-20210314081302.docx-原创力文档...
  8. oracle+m10-5,pchm10是oppo什么型号
  9. Linux执行curl报错:Protocol htttp not supported or disabled in libcurl
  10. Visual C++ Redistributable 一键安装All In One Runtimes