去年做了一阵 App 相关的开发, 经常遇到第三方登陆的需求, 比如微信, 微博, fb 的第三方登陆等等, 其实主要的流程都大同小异, 这里就以微信为例来介绍, 希望对大家有帮助.
微信开放平台(open.weixin.qq.com)
注册开发者账号, 填写基本信息, 例如邮箱, 邮箱激活
完善开发者的资料, 包括真实姓名, 手机, 地址等
腾讯审核开发者资质, 审核费用每年 300
在管理中心创建应用, 分移动应用, 网站应用等不同类型
填写应用的名称, 简介, logo, 应用的官方网站等信息
腾讯审核, 7 个工作日
通过后可获得该应用的 APPID,AppSecret
并且可在应用详情中申请开通微信登录, 微信支付等
调用流程
1. 获取授权码(code)
1.1. 移动应用调用 SDK
1.2. 网站应用调用
https://open.weixin.qq.com/connect/qrconnect
并传入 APPID, 及重定向地址, 生成二维码地址. 用户使用微信扫描二维码并同意授权后, 跳转至重定向地址, 并且带来了授权码.
2. 使用授权码获取 access_token
2.1. 通过调用
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
返回结果类似如下:
- {
- "access_token":"ACCESS_TOKEN",
- "expires_in":7200,
- "refresh_token":"REFRESH_TOKEN",
- "openid":"OPENID",
- "scope":"SCOPE",
- "unionid": "UNIONID"
- }
2.2. access_token 有效期
有效期较短(2 小时),refresh_token 有效期一个月, 可以使用 refresh_token 刷新 access_token, 避免频繁要求用户同意授权.
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
2.3. 多个应用的情况
如果同时有多个应用, 同一个微信用户在不同的应用上登录会生成不同的 openid, 但 unionid 相同, 若需要同一微信用户映射到后台的同一账户上, 应使用 unionid.
3. 通过 access_token 获取用户信息(如昵称等),
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID"
备注
以上调用步骤可以完全由前端 (App,web) 完成, 不过一般应用后台有自己的一套用户系统, 所以应用后台可以在不同的步骤介入, 例如可以在前端活动用户信息后调用后台进行入库保存, 或者也可已在获得 access_token 后介入, 由后台访问微信获取用户信息.
好了, 今天就先到这儿, cheers!
送书了, 送书了, 没有套路, 没有套路, 关注公众号 "程序员杂书馆", 就送出 O'Reilly《Spark 快速大数据分析》纸质书(亦有一批 PDF 分享)!
来源: https://www.cnblogs.com/morvenhuang/p/10119045.html