Google Plus OAuth PHP 401(未经授权)

时间:2016-07-31 06:43:33

标签: php oauth google-oauth google-oauth2 google-plus-signin

我正在尝试使用google plus使用their tutorial设置身份验证。我按字母顺序查看了说明,更改了client id中的client secretsignin.php。为了记录,谷歌+ API在谷歌开发者控制台中启用。我也按照指示更新了文件权限(chmod +x signin.phpchmod -R 555 vendor/)。但是,在加载我的身份验证URL(恰好位于我的域的auth_test/子目录中,然后单击登录按钮时,控制台会为发送的401 (unauthorized)请求抛出get /activites.我已经研究了这个问题,发现这可能是由无效的令牌造成的,但我不明白这是怎么回事,因为所有内容都已在singin.php.中设置好了很多帮助将会受到赞赏... < / p>

1 个答案:

答案 0 :(得分:1)

如果已断开连接,您需要重置应用的状态以刷新$tocken

  

处理API错误的Google API Office文档

401: Invalid Credentials
     

无效的授权标头。您正在使用的访问令牌也是   已过期或无效。

{   "error": {
>     "errors": [
>       {
>         "domain": "global",
>         "reason": "authError",
>         "message": "Invalid Credentials",
>         "locationType": "header",
>         "location": "Authorization",
>       }
>     ],
>     "code": 401,
>     "message": "Invalid Credentials"   } }
  

建议的操作:使用长期存取来刷新访问令牌   刷新令牌。如果此操作失败,请引导用户完成OAuth流程,   如授权您的应用程序中所述

在第一行的singin.php中也清楚地评论了它。 98:

    // Normally the state would be a one-time use token, however in our
    // simple case, we want a user to be able to connect and disconnect
    // without reloading the page.  Thus, for demonstration, we don't
    // implement this best practice.
    //$app['session']->set('state', '');

因此,在您的情况下,您的应用似乎已断开连接,从而导致$token变空。因此在第9行

强制执行此代码块
if (empty($token)) {
        // Ensure that this is no request forgery going on, and that the user
        // sending us this connect request is the user that was supposed to.
        if ($request->get('state') != ($app['session']->get('state'))) {
            return new Response('Invalid state parameter', 401);
        }