Laravel Аутентификация OAuth 2.0 с использованием Guzzle Client - PullRequest
1 голос
/ 13 марта 2020

Я занимаюсь разработкой приложения, такого как Postman Client, в Laravel. Для этого я использую Guzzle Client.

Для аутентификации OAuth 2.0 я использовал ссылку ниже,

Ссылка ссылки

I попробовал приведенный ниже код,

$token_storage = new FileTokenPersistence('/tmp/token.txt');

$baseurl="https://api.tradegecko.com/oauth/token";
$auth_code="";
$client_id="MYCLIENTID";
$client_secret="MYSECRET";
$redirect_uri="http://localhost:81/postman/public/request/instantadd";

if ($token_storage->hasToken() === false) {
    $auth_url = 'https://api.tradegecko.com/oauth/authorize?'.http_build_query([
        'client_id' => $client_id,
        'redirect_uri' => $redirect_uri,
        'response_type' => 'code',
        'prompt' => 'select_account',
        'scope' => '',
        'access_type' => 'offline',
    ]);

    echo "Go to the following link in your browser:\n\n";
    echo "    $auth_url\n\n";
    // if(! defined('STDIN')) define('STDIN', fopen("php://stdin","r"));
    echo "Enter verification code: ";
    $auth_code = trim(fgets(STDIN, 1024));
}


$reauth_client = new \GuzzleHttp\Client(['verify' => 'E:\cacert.pem',
    'base_uri' => $baseurl,
 ]);

$reauth_config = [
    'code' => $auth_code,
    'client_id' => $client_id,
    'client_secret' => $client_secret,
    'redirect_uri' => $redirect_uri,
];

$grant_type = new AuthorizationCode($reauth_client, $reauth_config);
$refresh_grant_type = new RefreshToken($reauth_client, $reauth_config);
$oauth = new OAuth2Middleware($grant_type, $refresh_grant_type);
$oauth->setTokenPersistence($token_storage);
$stack = HandlerStack::create();
$stack->push($oauth);

$client = new \GuzzleHttp\Client(['verify' => 'E:\cacert.pem',
    'handler' => $stack,
    'auth'    => 'oauth',
 ]);

$response = $client->get($requesturl, $options);
$result=json_decode($response->getBody(),true);

Я получаю ошибку при получении кода авторизации. Когда я go на ссылку authurl, я получаю токен.

Я получаю ошибку:

"message": "Unable to request a new access token"

Кроме того, я не знаю, для чего используется STDIN ..... Как я могу разместить здесь код авторизации?

Пожалуйста, помогите мне.

С уважением,
Реха

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...