layout: post
title: "OAuth"
date: 2016-04-25 22:42:34 +0800
comments: true
categories: [PHP]
开放式授权OAuth -Open Authorization
一、什么是OAuth
OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。oAuth是Open Authorization的简写。
二、OAuth协议简介
- OAuth 1.0 2007年年末 有漏洞
- OAuth 2.0 2010年年初
三、三个重要步骤
-
请求OAuth登录页面
- Request Token URL -未授权的令牌请求服务器 XX网请求QQ登录页面时使用的带有特定参数的URL
- http://graph.qq.com/oauth/...?...&client_id=*100490398&...&redirect_url=http://www.xxx.com/...
- client_id APPID
- client_secret APPKEY
-
用户使用QQ号登录并授权
- 验证用户密码成功后重定向到指定的url,此时可以通过$_GET['code']来获取
-
返回登录结果
- 拿到加了密的code过后还需要请求 User Authorization URL -用户授权的令牌请求服务地址 用户QQ登录授权之后请求的一个带有特定参数的URL
- 用来提高安全性。
- 请求过后会得到一个响应数据,包含一些基本的账号信息。
- code有生命周期(一般为几秒钟)并且只能使用一次。
- 请求成功过后可以拿到Access Token
四、Access Token
Access Token -用户通过第三方应用访问OAuth接口的令牌
- 在请求API时会动态生成URL 并且都离不开 Access Token
- Access Token具有较长生命周期(十天半个月)
- Access Token过期过后可以选择重新登录或者在请求API时使用need_refresh_token(各个平台不同)=true 来刷新Access Token