我在我的应用上使用Alex Bilbie的OAuth2-server-php进行OAuth。我想用它来保护我的API。我已经获得授权请求,授权代码,访问令牌全部整理出来,效果很好。
但是如何为API实现这个?
有一个主控制器可以解决一般方法:简单获取等等。在该构造函数中,我想确保他们调用的URL有效。如果access_token存在,请将关联的客户端绑定到关联的用户。
然后,在控制整个/products
资源的控制器中,我想验证此调用的范围,即检查access_token是否具有products_write
的post / put / patch范围。
回到主控制器,在构造函数中是:
$oauth = new Oauth(); //creates a new instance of the OAuth server, with all relevant info regarding db, grant types, and supported scopes.
if(!$oauth->server->verifyResourceRequest($oauth->request, $oauth->response)) {
echo '<pre>';
var_dump($oauth->server->getResponse());
exit();
}
它引起了大惊小怪:
object(OAuth2\Response)#129 (5) {
["version"]=>
string(3) "1.1"
["statusCode":protected]=>
int(400)
["statusText":protected]=>
string(11) "Bad Request"
["parameters":protected]=>
array(2) {
["error"]=>
string(15) "invalid_request"
["error_description"]=>
string(80) "Only one method may be used to authenticate at a time (Auth header, GET or POST)"
}
["httpHeaders":protected]=>
array(2) {
["Cache-Control"]=>
string(8) "no-store"
["WWW-Authenticate"]=>
string(149) "Bearer realm="Service", error="invalid_request", error_description="Only one method may be used to authenticate at a time (Auth header, GET or POST)""
}
}
这里有什么问题,我错过了什么?教程或文档中没有关于实际验证资源请求的内容。
答案 0 :(得分:0)
问题是我已登录主网站。它看到我已通过验证,但这是不允许的。