2014-12-05 81 views
0

我一直在關注基本OAuth 2.0 tutorial以創建OAuth 2.0服務器。整個部分運行良好,但是當我試圖在Google OAuth2遊樂場中使用它時,我在this頁面中發現了一些錯誤。Oauth2令牌遊戲場交換授權碼:400錯誤

我已經按照上述鏈接中的所有步驟進行了操作,除了我使用http://localhost/wordpress/authorize.php?state=xyz作爲我的授權端點,否則我會收到一條錯誤消息,說明該狀態是必需的,我不想編輯任何代碼。

現在,一切似乎都正常工作與授權的API。我被定向到我的localhost站點,當我授權請求時,我被返回到OAuth2 Playground。當我繼續下一步並嘗試將令牌的返回授權碼交換時,我會收到400錯誤。

整個請求/響應如下:

POST /wordpress/token.php HTTP/1.1 
Host: localhost 
Content-length: 191 
content-type: application/x-www-form-urlencoded 
user-agent: google-oauth-playground 

code=6d408c28d468db6586320bff3aacf16492489b67&redirect_uri=https%3A%2F%2Fdevelopers.google.com%2Foauthplayground&client_id=newclient&scope=& client_secret=newpass&grant_type=authorization_code 
______________________________________________________________________ 

HTTP/1.1 400 Bad Request 
Content-length: 106 
Content-type: text/plain 

An error occured while connecting to the server: Unable to fetch URL: http://localhost/wordpress/token.php 

這可能是一個簡單的錯誤,我在我結束製成,但我似乎無法弄清楚。我不認爲代碼真的是一個問題,因爲當我在教程頁面上進行測試時,一切正常。我還沒有編輯該示例使用的庫中的任何文件。如果需要,我可以編輯此帖子以包含代碼,以符合鏈接可能變爲非活動狀態的規則。

我注意到有關該請求的一件事是這一點&scope=&client_secret=newpass&grant_type=authorization_code。它看起來沒有範圍參數集,我想這可能會搞亂結果。

如果任何人有使用OAuth或OAuth2用戶遊樂場任何經驗,可以幫助我弄清楚那裏的東西出了問題,我將非常感激。此外,我對長期問題表示歉意,但我想盡可能多地包含信息。

回答

0

發生這種情況是因爲您在非可訪問網絡(例如本地主機)上託管OAuth服務器。基本上,當OAuth園地嘗試交換它的代碼並因此使用它自己的服務器令牌(不使用網頁上的一個XHR),並使用URL http://localhost...該服務器無法訪問您的計算機。

要和你需要使你的OAuth 2.0服務器到達與公共URL或IP address.What你可以做的反而是暴露你的本地服務到外面/互聯網操場上進行測試。爲此,您可以使用服務,如ngroklocaltunnel,您將獲得一個公開的URL到您的本地服務,您將能夠設置Playground。

+0

增加了一些提示/鏈接到ngrok和localtunnel這些很酷的服務,允許從外部暴露本地URL。 – Nivco 2016-03-29 22:04:30

相關問題