关于使用POST提交OAuth2的scope出现的问题的解决方案

啊呀, 这篇文章说到, 用一个checkbox scope[]来post提交scope的授权信息, 可是我看到OAuth2如下代码

return ((array)$request->getAllQueryParameters() + $clientData + array('state' => null));

后发现如下代码是不正确的。

$request = OAuth2_Request::createFromGlobals();
$response = $oserver->handleAuthorizeRequest($request, (bool)$_POST['authorize'], 用户ID);
$response->send();

因为OAuth2库处理的scope是仅限于querystring的(getAllQueryParameters), 可是如果把所有东西都放入querystring的话就要超过了长度限制, 可能导致HTTP错误的发生, 于是我决定使用POST之后在服务端处理, 于是需要加一行代码, 代码就变成了如下。

$request = OAuth2_Request::createFromGlobals();
$request->query['scope'] = $request->request['scope']; //<-----加了这个
$response = $oserver->handleAuthorizeRequest($request, (bool)$_POST['authorize'], 用户ID);
$response->send();

没有用isset判断scope是否存在的原因是必须提交scope字段。

发表评论?

1 条评论。

发表评论

注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)

Trackbacks and Pingbacks:

本文链接:https://twd2.me/archives/3377QrCode