基于 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"
}

猜你喜欢

转载自blog.csdn.net/qq_24101357/article/details/87629136