登录设计与集成三方登录
2021-08-02 15:21:21 2 举报
为你推荐
查看更多
登录及注册流程图,接入各三方登录时序图
作者其他创作
大纲/内容
https://oapi.dingtalk.com/sns/getuserinfo_bycode?signature=×xxxxxx×tamp=1596619097585&accessKey=dingoan23xk6elobzu000000
用户授权成功后重定向到设置的redirect_uri地址;并传递授权code,和透传state
调用三方接口发送验证码短信
结束
输入第三方账号和密码
用户填写验证码并登录
前端将用户名密码发送到服务端
记录失败次数
微信开放平台扫码登录
判断验证码是否过期
登录成功逻辑:生成token,写cookie等
返回access_token,refresh_token,expire_in,open_id,union_id
https://oapi.dingtalk.com/connect/qrconnect ?appid=dingoan23xk6elobzu4qwv &response_type=code &scope=snsapi_login &state=6edf7f5fcb0f4a5cace3a2fff9a1b5d4 &redirect_uri=https://www.meayan.com/callback
服务端
钉钉开放平台登录
保存用户手机号
返回access_token,refresh_token,expire_in
输入手机号码,及手机短信验证码
2:使用appid,secret,以及回传auth_code 获取accessToken
支付宝开放平台
请求登录,获取登录扫码地址
手机号常规校验
异步化
{\"id\
手机验证码登录
......
手机号注册用户
客户端
手机号对应用户是否存在
根据openid查询本地用户信息,查询该三方账号是否绑定过用户
用户名长度
是
https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx4f81b54638b2xxxx&secret=4161692191f24c417fe5e6ca2xxxxxxx&code=071gPV0w3QvGIU2Qpu2w32BW200gPV0t&grant_type=authorization_code
如果业务需要手机号,此处获取用户手机号码
QQ互联平台授权登录
使用开放平台参数:appid,redirect_uri,构建钉钉扫码地址透传随机的state以防止csrf攻击
1:校验state以防csrf攻击
{\"access_token\":\"35_DmFzEl2GQk4L8fcsll8EG0F2dvq4\
否
返回Gitee开放平台中的用户信息
6:使用用户信息生成token,写入cookie,记录登录日志
用户使用微信扫码并授权登录
https://gitee.com/oauth/token ?grant_type=authorization_code &code=31f84a35008b71c9b2570d04 &client_id=a3f60636b7bc41a048c49d2 &redirect_uri=https://sso.meayan.com/callback/gitee
5:用户信息不存在,则使用微信信息注册用户
QQ用户中心
2:使用accessKey和时间戳构建签名,使用code获取用户信息
4:使用钉钉用户信息获取本地用户信息
如果是第一次注册,根据openid获取头像,用户名等用户基础信息
用户使用钉钉扫码并授权登录
登录成功,跳转系统首页
验证码防刷校验:1:ip发送次数2:手机号发送次数3:发送时间间隔
使用开放平台参数:appid,redirect_uri,构建微信扫码地址透传随机的state以防止csrf攻击
注册
https://openauth.alipay.com/oauth2/publicAppAuthorize.htm ?app_id=20210011536510000 &scope=auth_user &redirect_uri=https://sso.meayan.com/callback/alipay &state=b4405c4d3aa0499cb1f520f5cdfebadd
微信开放平台
返回钉钉开放平台中的用户信息
2:使用appid,secret,以及回传code 获取accessToken
https://gitee.com/oauth/authorize ?client_id=a3f60636b7bc41a048c49d27c86f0529 &redirect_uri=https://sso.meayan.com/callback/gitee &state=6edf7f5fcb0f4a5cace3a2fff9a1b5d4 &response_type=code
Gitee开放平台
返回校验结果
账号锁定
https://sso.meayan.com/callback/gitee?code=5ff3bfada4b7e26ebcdba794628&state=6edf7f5fcb0f4a5cace3a2fff9a1b5d4
支付宝开放平台扫码登录
判断手机号与验证码是否匹配
4:使用Gitee用户信息获取本地用户信息
数据保存,注册用户
https://sso.meayan.com/callback/alipay ?state=b4405c4d3aa0499cb1f520f5cdfebadd &app_id=20210011536500000 &source=alipay_wallet &userOutputs=auth_user &scope=auth_user &alipay_token= &auth_code=c8d34e6f8c194dfbbde9889dd3020000
2:使用clientI_id,client_secret,以及回传code 获取accessToken
返回支付宝开放平台中的用户信息
5:用户信息不存在,则使用钉钉信息注册用户
登录成功;创建token,写Cookie等
次数是否达到阈值
生成验证码并存储至Redis
用户名是否重复
服务端进行常规校验
用户请求使用支付宝账号登录,获取登录地址
https://open.weixin.qq.com/connect/qrconnect?appid=wx4f81b54638b281xxx&redirect_uri=https://sso.meayan.com/callback/sso/wechat&response_type=code&scope=snsapi_login&state=416a0c76ad494351ac98b255f7c28c01
如果业务要求需要用户输入手机号,则返回标识,让用户输入手机号码进行绑定
4:使用支付宝用户信息获取本地用户信息
https://www.meayan.com/callback?code=2e296de3db80311d8ed7755a56fca07a&state=6edf7f5fcb0f4a5cace3a2fff9a1b5d4
用户在Gitee登录并授权登录
发送登录请求
{\"errcode\
用户使用支付宝扫码或账号密码登录并授权
用户密码注册登录
5:用户信息不存在,则使用Gitee信息注册用户
用户是否被锁定
https://api.weixin.qq.com/sns/userinfo ?access_token=35_U2yHxxx000000&openid=oWubmwk2Vm4w000000&lang=zh-CN
钉钉开放平台
将用户信息写入数据库
{\"access_token\":\"e5f523729f311221ae63b8d8549ef000\
客户端唤起第三方登录接口
4:使用微信用户信息获取本地用户信息
校验access_token,open_id的合法性
使用开放平台参数:clientId,redirect_uri,构建Gitee授权地址透传随机的state以防止csrf攻击
Gitee开放平台登录
3:使用access_token和openid获取用户信息
前端
手机号注册登录
请求使用钉钉登录,获取钉钉登录扫码地址
返回微信开放平台中的用户信息
3:使用access_token获取用户信息
使用开放平台参数:appid,redirect_uri,构建支付宝登录地址透传随机的state以防止csrf攻击
登录
https://sso.meayan.com/callback/sso/wechat?code=071RXlll20ugo54SH9ll2Bcsfk2RXll5&state=e58e288ccc5047199d356055eb5fa74e
{\"country\":\"NZ\
https://gitee.com/api/v5/user?access_token=cfb72c487c6f09148861
文本
5:用户信息不存在,则使用支付宝用户信息注册用户
返回access_token,openid,expire_time等信息
用户密码是否正确
0 条评论
回复 删除
下一页