2016-07-31 163 views
1

我想安裝驗證與谷歌加使用their tutorial。我按照方向逐字,改變了signin.php中的client idclient secret。爲了記錄,Google開發者控制檯中啓用了Google plus API。我按照說明更新文件權限(chmod +x signin.phpchmod -R 555 vendor/)。然而,在加載我的身份驗證URL(恰好在我的域的auth_test/子目錄中,然後單擊登錄按鈕時,控制檯會拋出401 (unauthorized),發送get請求/activites.我已經研究了該問題,並且看到這可能是由無效的令牌造成的,但我沒有看到怎麼說可能是因爲一切都已經設置在singin.php.太大的幫助,將不勝感激......谷歌加OAuth PHP 401(未授權)

+0

你確定你可以做一個curl請求?....也許你沒有curl擴展啓用。 – Hackerman

回答

1

您需要重置您的應用程序的狀態,如果斷開刷新$tocken

Google API office處理API錯誤的文檔

401: Invalid Credentials 

授權標頭無效。您使用的訪問令牌爲 已過期或無效。

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

建議的操作:刷新使用長壽命 刷新令牌的訪問令牌。如果失敗,如授權您的應用程序

而且它顯然是在singin.php註釋行沒有說明通過OAuth的流程, 引導用戶。 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變空。因此強制這個代碼塊在行號:91

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); 
     }