我試圖使用Laravel和Guzzle的授權代碼流訪問其餘API。Laravel Oauth2客戶端授權並重定向與Guzzle
他們指定的要求:
GET https://api.restsite.com/oauth2/authorize ?
client_id = [application id] &
response_type = code &
scope = orders inventory &
redirect_uri = [redirect uri]
在Laravel我實現它是這樣:
// Create a client
$client = new Client();
$request = $client->createRequest(
'GET', 'https://api.restsite.com/oauth2/authorize',[
'query' => [
'client_id' => 'myclientid',
'response_type' => 'code',
'scope' => 'inventory',
'redirect_uri' => 'https://myownsite/uri.php',
],
]
);
// Send the request
$response = $client->send($request);
如果我的print_r的$響應它會顯示來自其網站的登錄頁面。
現在,他們的下一個指令是成功登錄後會去我的重定向URI這樣:
https://[redirect uri]?code=[authorization code]
有了這個授權碼我現在就可以通過他們的指示撥打另一個電話:
POST https://api.restsite.com/oauth2/token ?
grant_type = authorization_code &
code = [authorization code] &
redirect_uri = [redirect uri]
最後,如果一切順利的JSON響應應該是這樣:
{
"access_token": [access token],
"token_type": "bearer",
"expires_in": 3600
}
w ^這可以用來訪問另一個端點上的受保護資源。
現在,我被困在Laravel,在Guzzle首次調用「授權」端點後,我回來的$響應不確定該怎麼處理,因爲我沒有被自動重定向任何地方。
所以我暫時沒有加入這個返回的觀點:
return View::make('welcome')->with('response', $response);
這很好的花花公子(相貌醜陋無CSS,因爲從他們的網站實際上沒有),但似乎有適當的形式代碼時,我看資源。
當前的URL只是我的項目的根:
http://myserver:8080/test/public/
然而,當我嘗試登錄我重定向到服務器上的我的主要根文件夾:
http://myserver:8080/
我不是確定如何讓它至少正確加載重定向URI,以便我可以接受該URI?code =參數,並根據需要使用它進行另一個調用。
我希望到目前爲止我沒有失去任何人。提前致謝!
你能分享你的代碼嗎?我被困在完全相同的地方。我能夠獲得返回代碼,但是當我嘗試執行下一步POST時,我收到了未經授權的用戶 – artSir 2016-08-15 18:34:07
@artSir我更新了我的答案以提供更多詳細信息。 – dmotors 2016-08-22 22:41:56