用户在应用1浏览、使用的过程当中,涉及到要使用应用2功能的时候,就产生了 oauth
认证!html
如下具体步骤参考的是:Laravel passport OAuth 认证laravel
应用1携带以下查询字符串:数据库
response_type | client_id | redirect_uri | scope | state |
---|---|---|---|---|
code | xxx | http://app.com/callback | '' | auth |
跳转到应用2的登陆受权界面,用户输入应用2的帐号、密码进行登陆,登陆后弹出是否对应用1受权。api
若是用户选择赞成受权,那么应用2将生成受权码并携带受权码跳转回应用1提供的 redirect_uri
。这个 redirect_uri
中能够作任意事情,好比保存受权码,后期再获取 token
,或者继续认证步骤,经过受权码获取 token
,这边要注意的是受权码的有效期!通常受权码有效期都较短,10min
左右。app
以前都是采起连接跳转的方式(Get
请求)执行操做,到目前的获取 token
步骤后应使用 post
方式在服务端经过 curl
完成!!curl
应用1提供以下参数(redirect_uri
要和 A
步骤中的一致!!):post
grant_type | client_id | client_secret | redirect_uri | code |
---|---|---|---|---|
authorization_code | xxx | xxx | http://app.com/callback | xxx |
向应用2发起 post
请求获取 token
,应用2认证相关参数,经过后响应以下数据:url
{ token_type: '' , access_token: 'xxx' , refresh_token: 'xxx' , expire: 'YYYY-MM-DD HH:II:SS' }
应用1获取数据保存到数据库。code
应用1调用应用2的 api
,在应用1上提供应用2的服务!server
应用1在请求头上携带:
Authorization: token_type access_token
调用应用2的 api
获取数据。
get/post
请求方式由实现方肯定,即:应用2。我上面举的例子中是推荐采用的请求方式,实际请求方式应该根据实现方提供的开发文档肯定!
client_id 应用id client_secret 应用密钥 redirect_uri 重定向 uri // 通常还须要提供 app_name 应用名称 app_url 应用网址 ....等
应用1提早向应用2申请提供的