Клиент Laravel Oauth2 авторизуется и перенаправляется с помощью GuzzlePhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Клиент Laravel Oauth2 авторизуется и перенаправляется с помощью Guzzle

Сообщение Anonymous »

Я пытаюсь получить доступ к API для отдыха, используя поток кода авторизации с Laravel и 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);
Если я напечатаю $response, он отобразит страницу входа с их сайта.

Теперь их следующая инструкция — после успешного входа в систему, она перейдет в мой 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
}
Который я могу использовать для доступа к защищенным ресурсам в другой конечной точке.

Теперь я застрял в Laravel: после того, как Guzzle сделал первый вызов конечной точки «authorize», возвращается $response, я не был уверен, что с ним делать, поскольку меня никуда автоматически не перенаправляли.

Итак, что я временно сделал, так это добавил этот возврат просмотр:

Код: Выделить всё

return View::make('welcome')->with('response', $response);
Это нормально, денди (выглядит некрасиво, без CSS, поскольку на самом деле не с их сайта), но, когда я смотрю на исходный код, кажется, что у меня правильный код формы.

Текущий URL-адрес — это всего лишь корень моего проекта:

Код: Выделить всё

http://myserver:8080/test/public/
Однако после того, как я пытаюсь войти в систему, меня перенаправляют в мою основную корневую папку сервера:

Код: Выделить всё

http://myserver:8080/
Я не уверен, как заставить его хотя бы правильно загрузить URI перенаправления, чтобы я мог взять этот параметр URI ?code= и использовать его для выполнения другого вызова по мере необходимости.

Надеюсь, я пока никого не потерял. Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/294 ... ith-guzzle
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»