onCode 类型的授权即可,如下: $server->addGrantType(new OAuth2\GrantType\AuthorizationCode($storage));
Authorization Code 默认不支持 Implicit Grant, 需要将 Server.php 第 104 行的 'allow_implicit' 修改为 'true' 以开启 Implicit 授权。
2. 获取 access_token
http://www.yii.com/oauth2/index.php?r=oauth2/authorize&response_type=token&client_id=testclient&state=xyz&redirect_uri=www.baidu.com
参数: response_type=token (必须, 固定值) client_id (必须) redirect_uri 可选 scope 可选 state 推荐 注意:response_type = token 而不是 code, 因为隐式授权不用获取 authorization code。 返回: 成功: 需要用户先点击授权按钮。 SUCCESS! Authorization Code: www.baidu.com?#access_token=9f0c38b475e51ccd3
出错: redirect_uri 与注册的 client redirect_uri 不匹配。 {"error":"redirect_uri_mismatch","error_description":"The redirect URI provided is missing or does not match","error_uri":"http:\/\/tools.ietf.org\/html\/rfc6749#section-3.1.2"}
access_token 存在于 redirect_uri 中的片段(fragment)中, 即‘#’符号之后,client 需要自己提取片段中的 access_token 并注意保存。开发人员应注意,一些用户代理不支持在HTTP“Location”HTTP响应标头字段中包含片段组成部分。这些客户端需要使用除了3xx 重定向响应以外的其他方法来重定向客户端——-例如,返回一个HTML页面,其中包含一个具有链接到重定向URI的动作的“继续”按钮。
第三种认证方式: Resource Owner Password Credentials (资源所有者密码凭证许可)
资源所有者密码凭据许可类型适合于资源所有者与客户端具有信任关系的情况,如设备操作系统或高级特权应用。当启用这种许可类型时授权服务器应该特别关照且只有当其他流程都不可用时才可以。
这种许可类型适合于能够获得资源所有者凭据(用户名和密码,通常使用交互的形式)的客户端。通过转换已存储的凭据至访问令牌,它也用于迁移现存的使用如HTTP基本或摘要身份验证的直接身份验证方案的客户端至OAuth。
+----------+ | Resource | | Owner | | | +----------+ v | Resource Owner (A) Password Credentials | v +---------+ +---------------+ | |>--(B)---- Resource Owner ------->| | &nbs |