Obtenir des données utilisateur à l'aide d'un jeton d'accès dans l'application client passeport laravel
J'ai créé avec succès serveur.app et client.app à l'aide de Laravel Passeport documentation. Tout fonctionne comme prévu.
client.app de la 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'];
});
Par défaut, cette route retourne access_tokenavec qui je peux faire ce que je veux.
Demande:
http://server.app/oauth/authorize?client_id=3&redirect_uri=http%3A%2F%2Fclient.app%2Fcallback&response_type=code&scope=
Retourne:
http://client.app/callback?code=access_token
Question:
Comment faire correctement demande à serveur.app avec access_token dans client.app pour obtenir par exemple utilisateur(s) courriel(s).
Dois-je utiliser: http://server.app/api/user
demande pour obtenir des données? Si oui, comment je peux faire? Si possible, veuillez écrire un code.
Merci pour toute les réponses.
source d'informationauteur Tauras
Vous devez vous connecter pour publier un commentaire.
J'ai absolument fou sur ce problème! Il a juste fait pas flipper sens pourquoi il continuait de cracher la stupide
Unauthenticated
d'erreur lorsque vous essayez de frapper un itinéraire tel que/api/user
. Après beaucoup de recherches (BEAUCOUP de recherches), j'ai enfin trouvé la réponse. Si vous voyez cette fero de Laracasts, vous êtes mon héros!https://laracasts.com/discuss/channels/laravel/laravel-53-passport-api-unauthenticated-in-postman-using-personal-access-tokens
Edit:
Une fois que vous avez effectué la modification de la
app\Providers\RouteServiceProvider.php
mentionné ci-dessus, procéder à l'exemple ci-dessous.Tout d'abord, nous avons besoin de récupérer une nouvelle
access_token
. Pour ce faire, je suis en utilisant le mot de passegrant_type
(plus d'info: https://laravel.com/docs/5.4/passport#password-grant-tokens)Pour récupérer une nouvelle
access_token
j'ai créé une nouvelle route surroutes/web.php
et l'a appelé/connect
. J'ai ensuite placé le code à partir du lien ci-dessus:À l'aide de Chrome Facteurvous devez:
GET
Accept
et de la valeur deapplication/json
Exemple de résultat:
Mettre en évidence la
access_token
chaîne et le copier dans un éditeur de texte.Vous aurez besoin de créer une nouvelle route dans
routes/api.php
. L'itinéraire ci-dessous simplement la sortie du courant les utilisateurs de l'API' info:Une fois que vous avez fait ci-dessus, procéder à ces modifications pour Postman:
GET
Authorization
et de la valeur deBearer access_token_here
(remplaceraccess_token_here
avec le jeton d'accès que vous avez copié précédemment)Exemple de sortie:
Avez-vous essayé de courir sur le FACTEUR de chrome app?
Si pas, téléchargez-le. https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=en
Remplir les informations.
Après avoir généré les données, cliquez sur le bouton de CODE à partir du haut à droite (j'ai mis en évidence avec la couleur verte).
Enfin, sélectionnez votre langue et copiez le code. Pour le PHP, j'ai choisi php cURL.
Espère que cela fonctionne.
Selon Laravel la documentationvous devez ajouter de la route vers le serveur d'application (
routes/api.php
):$response->getBody();
Faire la demande via quzzle: