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