啊呀, 这篇文章说到, 用一个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 条评论。