目录
最近在尝试接入各种第三方登录。简单记下笔记,主要是 web server 模式。
目前常见的基于Oauth2.0 协议的第三方登录 流程如下:
- get code by state
- get access_token by code
- get user_info by access_token
- login by user id\email\phone
纯流水账记录,基本不涉及代码(主要是代码很简单,就按格式调用3\4个接口),见谅。
另外由于只用于登录,access_token对我来说就是一次性的,因此我这里不会涉及refresh access_token的部分
Microsoft
体验和感受
- 申请不需要审核,但需要发布者验证需要MPN ID
- 发布商域验证需要在服务器上放.well-known/openid-configuration 以验证域名
- 应用申请需要准备隐私条款和服务条款链接,但似乎不填也没啥事
- 申请应用有4类型,会影响调用的接口中{tenant}值,可以从应用页面 endpoint 确认。
- 另外可以关注"OpenID Connect metadata document"的链接,最后发现答案都在这
![image.png](/?_x=file.out&idm=44571fc&extr=686x127)
- 获取用户资料接口为Microsoft 标识平台的 UserInfo 终结点
- scope 带上 profile 似乎也拿不到name 字段,原因未知
- clinet secret 需要手动生成,而且有效期最多是2年
总的来说,后台界面,文档和接口可以说是最复杂的。得耐心一点
相关链接
申请应用
Microsoft identity platform and OAuth 2.0 authorization code flow
X(twitter)
体验和感受
-
申请无需审核
-
OAuth 2.0 目前(2024年6月5日)无法获取邮箱,OAuth 1.0 则可以
接口是 https://api.twitter.com/1.1/account/verify_credentials.json
-
获取access_token 报错’Missing valid authorization header’
confidential client 需要增加Authorization 到header中,文档没说明值得格式
'Authorization: Basic '.base64_encode($clinet_id.':'.$client_secret)
-
获取用户资料需要配置 scope ‘users.read tweet.read’,个人觉得权限有点大。
-
文档感觉一般,部分内容还是得问谷歌
相关链接
申请应用
文档
weibo
体验和感受
- 申请需要审核
- 申请时需要准备应用介绍突破,指定尺寸
- 申请前页面需放置登录按钮
- 未通过审核可通过添加测试账号调试
- 获取邮箱接口需要审核后再申请,并且为联系邮箱,而非安全邮箱
- access_token接口会返回uid,可以少调用一次接口
- 审核时间(2024-6-4),
- 一天了,没反应
- 可能在3天左右,8号的时候已经显示通过,但没有邮件或其他提醒
相关链接
申请应用
文档
微信web应用
体验和感受
- 申请需要准备打印机,因为要交一份《微信开放平台网站信息登记表》人手写签名的扫描件
- 未审核、未申请权限通过无法调试
- 开通微信登录权限
- 需要开通开发者认证(需企业,没有个人选项)
- 需缴费:中国大陆地区:300元,非中国大陆地区:99美元
- 审核速度快
- (说是在1-7个工作日内完成审核)
- 第一次文件没手写,隔天就给拒绝了。
- 第二次修改后提交,隔天通过
- 没有邮箱
- 在接入小程序后,我觉得小程序比Web应用好用
代替方案
-
个人公众号
- 用户点击微信登录
- 弹出公众号关注二维码
- 用户点击获取验证码菜单
- 服务器接收到点击事件,返回验证码
- 用户在登录页面输入验证码
当然这过程很麻烦,不快捷登录
-
个人小程序
- 用户点击微信登录
- 页面展示生成带标记的小程序码
- 用户扫码小程序码进入小程序登录授权页面,点击授权
- 此时取得标记和用户openid,服务器标记已登录
- 页面登录成功
已经实现,效果还行,另外补了一篇Web应用微信登录以及用个人微信小程序做扫码登录。
扫码后打开小程序,页面加载完毕完成登录,算比较方便的。
但代码就有点绕了。
相关链接
申请应用
文档
google
体验和感受
- 开通测试版无需审核,但要求小于100个用户
- 审核申请需要准备服务条款链接和隐私条款链接
- 提交审核后1-2天会有份邮件再次确认,不回复则不会进入审核状态
yandex
俄罗斯的google
体验和感受
- 申请应用无需审核,快速
- 文档详细
相关链接
申请应用
文档
Gihub
Github 可以通过Github App 或Oauth Apps 接入,官方推荐前者,应该可以使用精细权限和身存期较短的令牌。
体验和感受
- 申请应用无需审核,快速
- 文档详细,但包含许多内容,相关内容只有页面的小部分
- 平台的文档内容多,如果不熟悉,会找不到user_info api接口,比如我
- Oauth apps 获取access_token时,并不提供 expires_in
- Github App 和Oauth apps使用的接口是一致的
相关链接
申请应用
文档
user info api
Github Apps 生成登录按钮
Github Apps 生成用户访问令牌
GitHub 应用和 OAuth 应用之间的差异
Gitee
体验和感受
- 申请应用无需审核,快速
- 应用界面自带模拟登录按钮,很方便
- API文档接口界面自带测试功能,友好
- 奇怪的获取access_token接口
- client_secret 放POST BODY,其他参数用GET
- 依然需要提交 redirect_uri 参数
- 用户信息接口没有邮箱
- 几时scope中明确带有emails 依然没有邮箱。可能我的账号问题
- 有另外一个接口获取邮箱的接口
相关连接
申请应用
文档
QQ
吐槽
以前是我最喜欢也最常用的一个第三方登录,其中一个就是登录QQ邮箱。由于密码保存在chrome中,这使得登录邮箱时只需要按一下登录。
为什么说时以前呢?不知从几时开始:
- 登录已经开始各种人机验证
- 其中最烦的时还要加个短信验证
- 要不就挂着QQ或TIM,然后挂着QQ或TIM还要再手机APP扫码。
只能说,吐了。现在进邮箱就直接从PC微信的QQ邮箱提醒卡片点击进入。回到他的第三方登录。
体验和感受
-
申请(麻烦)
-
需要备案
-
需要审核
-
网站功能完善
-
未通过申请无法测试,没有调试模式
-
审核速度慢(老实人)
- (2024-6-3),说是1-3个工作日内,在第5天被拒绝
- 第二次申请。,10天后被拒绝,一直说和备案信息不一致
- 第三次提交,隔了4天被拒绝,这次原因是未放置登录按钮位置或不规范。
重新到腾讯云里面查备案信息,一一复制,之前总是从ICP备案查询系统里面看,但不包含网站名,
- 可能填写的网站名称是和申请的时候名字不一致。
- 可能是备案号要服务备案号而不是主题备案号。粤ICP备20061555号-1 ,后面需要带数字。
- 第四次提交,隔了5天再次被拒,理由还是为"未放置QQ登录按钮位置/位置放置不规范"
- 心想又会被拒,所以第三次就把不能用的QQ登录按钮隐藏了。好了现在又被拒绝了。
- 在介绍里面又补充了登录界面链接,就怕审核看不见(主要不写他也知道,我就没给入口)
-
审核速度极快(走人工客服)
第四次提交后依然被驳回,放弃提交,直接走人工客服。一个小时后通过了
主要的几个问题:
- 提交审核中平台信息中的网站地址必须放置登录按钮,或者登录引导按钮,登录页面要放置QQ登录入口
- 平台信息中的网站地址可以是二级域名,但只能是首页,或许可以设置个域名用于登录
之前一直以为只能放一级域名,而我的一级域名放的是没有登录入口的博客首页。
- 虽然可以添加调试QQ,但不能调试,更申请的是审核的时候还会检查跳转链接中参数的APPID。
也就是说我必须把一个开发一半不可用未验证的功能上线去审核,并且配置正确,怎么说呢,就是别扭。
想像一下有个运营中的网站,脑子抽了想增加个QQ登录,然后需要挂个不可用的QQ登录图标一个多月。
-
获取用户信息
- 获取user_info前需要通过openid获取
- 没有邮箱
-
文档
- 略旧
- 调试工具登陆失败
调试工具登陆失败
原因是HTTPS页面中引用的HTTP资源加载失败
-
个人意见
- 跳过这个鬼东西,第三方不快捷登录
- 再授权后需要让用户补充一个邮箱地址或手机号码,不然会失联
- 我建议的申请流程是,
- 代码写好
- 资料填好
- 提交审核,
- 不通过直接走人工客服
- 排队接通前让自己处于可编辑状态,哪里不对直接改直接上线直接提问,一次客服时间解决问题
-
最后再吐槽
可以说这个功能QQ内部已经被遗弃遗忘,对于一个可能有15年历史的功能,按理说应该是很完善。可惜没有常见错误,没有审核指引,没有调试模式,没有草稿模式,(修改即提交审核,需要基本信息和平台信息,写错了要等一个审核周期,2个都错,要分2次改,等2次审核驳回)。宁愿用户开盲盒走人工客服也不改。
已给客服提交流程优化建议,不时会在跟进。(2024-6-26记,预估给过半年时间吧,2025-1-1再探)
相关连接
注册创建应用
文档
微信社区开发平台客服,需要工作日的工作时间,可能还要排队
Apple
没通过开发者申请,后面再补充。
有点不想申请了,费用略高。
Facebook
账号已申请就封,然后就没后续了。
好吧,用了奇怪的方法注册后验证了手机。
隔天又被封禁,这次在封禁前登录了手机,通过手机录视频通过审核。
体验和感受
- 需要审核,甚至会有年度考核
- 需要准备数据删除说明,隐私条款和服务条款
- 有个提示[APP REVIEW Delay]写着审核时间10天+
- 但似乎不影响发布。后续再补充
- 发布需要业务验证,流程看起来就是企业认证,很繁琐。
- facebook 能搜到中国的公司,不确定是不是有公开的接口查询
- 最后需要传能提供身份认证的信息如身份证进行验证,
待检查中,然后半天就通过了
- 发布时Facebook爬虫会访问设置中的链接,类似服务条款、隐私条款、测试链接等,确定其可以被访问。
- 可以通过facebook sharingdebugger确定facebook爬虫的访问状态。
- 应用会有访问速率限制,每小时不大于200个请求。
- 不确定应用中的 app secret 和client secert 的区别,分别出现在不同的页面中。
- 登录授权调用接口用的是app secret,也就是Basic 页面中跟在app id 后面的那个
- app secret 在App settings Basic 页面
- client secert 在App settings Advanced 页面
- 没有去翻文档,感觉 client secert用于访问APP,修改配置啥的。而app secret用于访问APP API,获取access token啥的
- 获取用户后邮箱需要在后台添加 email 权限,同时在接口认证时也需要scope中携带email
相关链接
申请应用
文档