基于 Oauth 2.0 的第三方账号登录实现

基于 Oauth 2.0 的第三方账号登录实现

Oauth 2.0 原理与授权流程

  • 1.刚开始的第三方应用接入其他账号登录过程: 

存在问题:

  • 1.用户账号、密码信息透露给了第三方应用,导致安全问题
  • 2.用户要回收授权,只能通过修改密码来实现,此时如果有多个第三方应该,所有授权一起被回收
  • 3.很难安全的实现对不同的第三方应用给予不用的权限
  • 2.使用oauth改进的原理: 

  • 3.使用oauth实现的具体流程: 

3个关键过程:

  • 1.用户在服务商授权页完成授权,获得code
  • 2.第三方应用取得code后访问服务商应用,获得access_token
  • 3.第三方应用以access_token为凭证到服务商获取资源

百度平台授权流程及接口调用

Server端使用百度OAuth2.0授权调用开放API流程

  1. 引导用户到如下地址进行授权: http://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REGISTERED_REDIRECT_URI

  2. 如果用户同意授权,页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE 。

  3. 换取Access Token。 https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code=CODE&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&redirect_uri=YOUR_REGISTERED_REDIRECT_URI

code: 是授权成功后跳转到redirect_uri后面带的code
client_id: 是apiKey
client_secret:是secretKey
redirect_uri:是回调的url

测试用例

返回结果:
{
"expires_in": 2592000,
"refresh_token": "22.3fcc01b887492aa1776c64d22c5a4848.315360000.1865835419.2956862442-15580017",
"access_token": "21.90c30aff2eff3cffa42b49c152e9feae.2592000.1553067419.2956862442-15580017",
"session_secret": "b4a40269b5b1e7951d704bf5ff917d9e",
"session_key": "9mnRfQpMu/CXDG0NYlKZmj5DgbjYnUZHeePW5Z7chFc+/PFjB7Cv3MiS12m7iz8AP4SrYgz2HhwWNeC9/yFmy51Xu7sLiW9qZLg=",
"scope": "basic"
}
返回结果:
{
"uid": "2956862442",  (这个可以保存到数据库中做逻辑登录)
"uname": "幸运的深仔",
"portrait": "6db0e5b9b8e8bf90e79a84e6b7b1e4bb94353a"
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

llsydn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值