web-dev-qa-db-de.com

Holen Sie sich Benutzerdaten mit Zugriffstoken in laravel passport client app

Ich habe server.app und client.app mit Laravel Passport-Dokumentation erfolgreich erstellt. Alles funktioniert wie erwartet.

client.app Route:

Route::get('callback', function (Request $request) {
   $http = new GuzzleHttp\Client;
   $response = $http->post('http://server.app/oauth/token', [
    'form_params' => [
        'grant_type' => 'authorization_code',
        'client_id' => 3,
        'client_secret' => 'secret',
        'redirect_uri' => 'http://client.app/callback',
        'code' => $request->code
    ]
   ]);
   return json_decode((string) $response->getBody(), true)['access_token'];
});

Standardmäßig gibt diese Route access_token zurück, mit dem ich tun kann, was ich will.

Anfrage:

http://server.app/oauth/authorize?client_id=3&redirect_uri=http%3A%2F%2Fclient.app%2Fcallback&response_type=code&scope=

Rückgabe:

http://client.app/callback?code=access_token

Frage:

So stellen Sie eine korrekte Anforderung an server.app mit dem angegebenen Zugriffstoken in client.app, um zum Beispiel Benutzer-E-Mail (s) zu erhalten.

Sollte ich es benutzen: http://server.app/api/user Daten abrufen? Wenn ja, wie kann ich das machen? Wenn möglich, schreiben Sie bitte einen Code.

Vielen Dank für alle Antworten.

16
Tauras

Haben Sie versucht, es auf POSTMAN chrome app? Wenn nicht, laden Sie es herunter. https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=de

Füllen Sie die Informationen aus. enter image description here

Nachdem Sie die Daten erfolgreich generiert haben, klicken Sie oben rechts auf die Schaltfläche CODE (ich habe sie grün hervorgehoben).

Zuletzt wählen Sie Ihre Sprache und kopieren Sie den Code. Für PHP habe ich PHP CURL gewählt.

Hoffe, es funktioniert.

5
Vandolph Reyes

Laut Laravel documentation sollten Sie der Server-App eine Route hinzufügen (routes/api.php): $response->getBody();

Route::get('/user', function () {
    // authenticated user. Use User::find() to get the user from db by id
    return app()->request()->user();
})->middleware('auth:api');

Anfrage über quzzle stellen:

$response = $client->request('GET', '/api/user', [
    'headers' => [
        'Accept' => 'application/json',
        'Authorization' => 'Bearer '.$accessToken,
    ],
]);
echo $response->getBody();
3
shukshin.ivan