前面讲的三种模式都是面向用户的;
获取的 access_token 都有对应的 user ;
今天要讲的客户端模式获取的 access_token 则没有对应的 user ;
和 密码模式 相似的地方在于一般都是用于自己的应用;
不会给第三方开放客户端模式;
它的应用场景主要是机器或应用之间调用 api 访问数据;
和 简化模式 相似的地方在于同样只有 access_token 没有refresh_token ;
获取 Token
直接获取 Token ;
请求方式: POST
链接:http:// oauth.test/oauth/token
请求参数如下:
grant_type: client_credentials scope: *
grant_type : 固定值为 client_credentials
scope : 要申请的权限
请求中没有任何关于用户的信息;
OAuth 协议中也没有明确要求如何认证;
但是获取 access_token 的这个接口必须要是受保护的;
协议的示例是使用 Authorization: Basic ;
POST /token HTTP/1.1 Host: server.example.com Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW Content-Type: application/x-www-form-urlencoded grant_type=client_credentials
请求的返回值如下:
{ "token_type": "Bearer", "expires_in": xxx, "access_token": "xxx", }
请求的返回值如下:
token_type 是 token 类型一般是 Bearer ;
expires_in 过期时间
access_token 用于访问资源的令牌