mit Ihrem Passport-fähigen API
Sie müssen die Authentifizierung des Kennworts Grants-Client in dieser Situation verwenden, this section of Passport's documentation sehen.
Sobald Sie eine Passwort Grant-Client generieren, mit:
php artisan passport:client --password
Sie benötigen einen Zugriffstoken aus Ihrer Anwendung zu beantragen, und es mit Ihren nachfolgenden Anforderungen, um die geschützten Auth zuzugreifen senden : api Middleware Routen.
ein Zugriffstoken zu erhalten, /oauth/token
Route eine Anfrage an Ihre App senden (dies ist eine PHP-Implementierung offensichtlich, sicherzustellen, dass Sie richtig unten Anfrage Formatierung in Ihrer Java-Implementierung):
$http = new GuzzleHttp\Client;
$response = $http->post('http://your-app.com/oauth/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => '<client id returned from the artisan command above>',
' client_secret' => '<secret returned from artisan command above>',
'username' => '[email protected]',
'password' => 'my-password',
'scope' => '',
],
]);
return json_decode((string) $response->getBody(), true);
Vergewissern Sie sich die hinzufügen client_secret
und client_id
, die vom oben genannten Handwerkeranruf zurückgegeben wurden, und sicherstellen, dass username
und password
einen gültigen Benutzer in Ihrer Datenbank referenziert.
Wenn hier alles in Ordnung ist, sollten Sie eine access_token
und refresh_token
in der Antwort erhalten. Die access_token
ist, was Sie mit dem auth:api
Wächter authentifizieren müssen. Um richtig diese zurück zu Ihrem api passiert, müssen Sie Ihre nachfolgenden Anforderungen mit den Header senden Authorization: Bearer <your accessToken>
und Accept: application/json
Zum Beispiel für den Zugriff auf Ihre „test“ Route:
$response = $client->request('GET', '/api/test', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '. <accessToken from /oauth/token call>,
],
]);
Wenn Sie festgelegt haben Sie sollten eine JSON-Antwort mit dem von Ihnen angegebenen Array sehen.
Warum leitet/api/test mich ohne Fehler um?
Sie benötigen eine Route mit der auth:api
Middleware. Dadurch werden Sie umgeleitet, da Sie nicht wie oben beschrieben die richtigen Header angegeben haben. Dies ist das erwartete Verhalten.
Hoffe, das hilft.
Hallo, hast du das gelöst? – utdev