啊呀, 这篇文章说到, 用一个checkbox scope[]来post提交scope的授权信息, 可是我看到OAuth2如下代码
1 | return (( array ) $request ->getAllQueryParameters() + $clientData + array ( 'state' => null)); |
后发现如下代码是不正确的。
1 2 3 | $request = OAuth2_Request::createFromGlobals(); $response = $oserver ->handleAuthorizeRequest( $request , (bool) $_POST [ 'authorize' ], 用户ID); $response ->send(); |
因为OAuth2库处理的scope是仅限于querystring的(getAllQueryParameters), 可是如果把所有东西都放入querystring的话就要超过了长度限制, 可能导致HTTP错误的发生, 于是我决定使用POST之后在服务端处理, 于是需要加一行代码, 代码就变成了如下。
1 2 3 4 | $request = OAuth2_Request::createFromGlobals(); $request ->query[ 'scope' ] = $request ->request[ 'scope' ]; //<-----加了这个 $response = $oserver ->handleAuthorizeRequest( $request , (bool) $_POST [ 'authorize' ], 用户ID); $response ->send(); |
没有用isset判断scope是否存在的原因是必须提交scope字段。
1 条评论。