Oauth2回调不处理错误代码

时间:2014-01-22 09:29:11

标签: zend-framework oauth-2.0 box-api

我刚开始使用Oauth2程序在第三方网站上进行身份验证。我正在使用Zend Framework 1.12所以我组建了我的控制器来处理授权代码请求后的回调。问题是,它无法管理用户未授予访问其帐户权限的情况。

CallbackController.php的代码如下:

 public function indexAction() 
{
    $auth_code= $this->getRequest()->getParam('code', null);
    $this->view->code = $auth_code;
    if ($auth_code!=null){
        $client = new Zend_Http_Client('https://www.box.com/api/oauth2/token');
        $client->setMethod(Zend_Http_Client::POST);
        $client->setParameterPost(array(
                'client_secret'  => 'xxxxxxxxxxxxxxxxxxxxx',
                'client_id' => 'xxxxxxxxxxxxxxxxxxxxxxxx',
                'grant_type'     => 'authorization_code',
                'code' => $auth_code
        ));
        $response = $client->request()->getBody();
        $this->view->response= $response;
        $result = json_decode($response);
        // The rest of the code here
    } else {
        echo "The request was denied, you didn't give the autorization to access your box account.";
    }                
}

与此Controller关联的视图如下:

 <div id="welcome">
 <?php if ($this->code!=null){?>
 <h1>Success!</h1>

 <h3>You have successfully authorized the app to work on your box account</h3>

  <div id="more-information">
    <p><?php echo $this->response?></p>
    <p></p>
</div>
<?php } else {?>
<h1>Failure</h1>

<h3>You haven't authorized the app to work on your box account</h3>

<div id="more-information">
    <p></p>
</div>
<?php }?>
</div>

正如您在控制器和视图中都可以看到的那样,有一个“if”语句来区分用户进行自动化的情况和用户没有给出的情况。问题是这两个“if”语句都没有执行。所以我猜测访问令牌的存在不是检查授权是否已授予应用程序访问用户数据的正确方法。

我发现很难解释,但是当我测试它时,当我尝试访问Oauth身份验证,并且我没有授权给应用程序时,它会提示我进入白页。此白页的网址如下:

 https://app.box.com/api/oauth2/authorize?response_type=code&client_id=xxxxxxxxxxxxxxxxx&redirect_uri=http://localhost:10088/imball-reagens/public/callback

评估我设置的消息。我该怎么做才能得到正确的案例来管理错误? 非常感谢任何帮助。

(如果这很重要,我正在尝试连接Box-API。)

1 个答案:

答案 0 :(得分:0)

问题如下:回调uri必须是ssl启用的,所以它不能是:

 http://localhost:10088/imball-reagens/public/callback

但必须是:

 https://localhost:10088/imball-reagens/public/callback

要使用它,您必须在apache配置中启用openssl。我在Mac上,所以我使用了this tutorial。我想还有更多的windows和linux教程。感谢大家的耐心和帮助。