2017-07-27 9 views
1

Hallo Ich versuche, eine Webanwendung zu tun, und ich habe ein Problem. Wenn ich das Token aus/oauth/Token anfordern erhalte ich diese Antwort:Laravel 5.4 Reisepass: unsupported_grant_type

{"error":"unsupported_grant_type","message":"The authorization grant type is not supported by the authorization server.","hint":"Check the `grant_type` parameter"} 

Und mein Code:

import { Injectable } from '@angular/core'; 
import { Http, Response, RequestOptions, Headers } from '@angular/http'; 
import { Observable } from 'rxjs/Observable'; 
import 'rxjs/Rx'; 

@Injectable() 
export class UserService { 

    private API: string = 'api/'; 
    private OAuth: string = 'oauth/' 

    constructor(private _HTTP: Http) { } 

    private get_header(): RequestOptions { 
     let headers = new Headers(); 
     headers.append('Access-Control-Allow-Origin', '*'); 
     headers.append('Content-Type', 'application/x-www-form-urlencoded'); 
     return new RequestOptions({ headers: headers }); 
    } 

    Signin(email: string, password: string): void { 

     let data = { 
      form_params: { 
       grant_type: 'password', 
       client_id: 2, 
       client_secret: 'vSFxVqALQHjyotPyGfhrGj3ziudUGsts2ZWiAGms', 
       username: email, 
       password: password, 
       scope: '*', 
      } 
     }; 

     this._HTTP.post(
      this.OAuth + 'token', 
      data, 
      this.get_header() 
     ).toPromise() 
     .then((_response) => { 
      console.log (_response); 
     }); 
    } 
} 

Und der Request-Header:

POST /oauth/token HTTP/1.1 
Host: localhost:8000 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0 
Accept: application/json, text/plain, */* 
Accept-Language: en-US,en;q=0.5 
Accept-Encoding: gzip, deflate 
Referer: http://localhost:8000/signin 
Access-Control-Allow-Origin: * 
Content-Type: application/json 
X-XSRF-TOKEN: eyJpdiI6IkxtOHhqd0RDUW9MVjl1YVh0U0c4N2c9PSIsInZhbHVlIjoiUmdrenlLWll2eEFtdGFQK2dsWGN0Nm5jWGY2MW5HXC9zMDJFdU52SEh4RUoxSkY1QWVHUFNySXFkUUQ3SDNaTW0zNll6SVRONlFHQjBFVzZPT0RxQkR3PT0iLCJtYWMiOiIwNzg5ZjliMzUwYjE5ZWM4MWE3MTg3NDRjYWZiMDE1MWI1NWJjN2E1NmI5ZTMzY2UzMTIwODI4ODY0ZDQ1ZDY5In0= 
Content-Length: 208 
Cookie: XSRF-TOKEN=eyJpdiI6IkxtOHhqd0RDUW9MVjl1YVh0U0c4N2c9PSIsInZhbHVlIjoiUmdrenlLWll2eEFtdGFQK2dsWGN0Nm5jWGY2MW5HXC9zMDJFdU52SEh4RUoxSkY1QWVHUFNySXFkUUQ3SDNaTW0zNll6SVRONlFHQjBFVzZPT0RxQkR3PT0iLCJtYWMiOiIwNzg5ZjliMzUwYjE5ZWM4MWE3MTg3NDRjYWZiMDE1MWI1NWJjN2E1NmI5ZTMzY2UzMTIwODI4ODY0ZDQ1ZDY5In0%3D; laravel_session=eyJpdiI6ImlrdlNMTGtTK241WVArZGx6MzE5Mnc9PSIsInZhbHVlIjoiRVQxSmlpZFwvV3B4eVRHVUdVYlRtY1VOZHUzZ09FQnMyZjhjSnZoQjA0VVBvM0x5YnJJbmx3b25cL3dCbVZScTVUb2lTVkg5Sldyd3R0aFluMDBvcmhxQT09IiwibWFjIjoiZDk4NjZkMDhiNTE0NzA3YzQxODVkNGJjN2E3OTRjNWEzMjc2Njk2ZjEyODY2MzY3NmRhYzAzN2U1NGE0ZTg4NCJ9 
Connection: keep-alive 

Antwort-Header:

HTTP/1.1 400 Bad Request 
Host: localhost:8000 
Connection: close 
x-powered-by: PHP/7.1.1 
Content-Type: application/json 
Cache-Control: no-cache, private 
Date: Thu, 27 Jul 2017 09:35:53 +0000, Thu, 27 Jul 2017 09:35:53 GMT 
X-RateLimit-Limit: 60 
X-RateLimit-Remaining: 59 

Postdaten:

{ 
    "form_params": { 
    "grant_type": "password", 
    "client_id": 2, 
    "client_secret": "vSFxVqALQHjyotPyGfhrGj3ziudUGsts2ZWiAGms", 
    "username": "fasfa", 
    "password": "fasfa", 
    "scope": "*" 
    } 
} 

Ich habe keine weiteren Details.

+0

Haben Sie einen 'Passwort'-Client installiert? –

+0

Ich glaube nicht, wie installiere ich? –

Antwort

2

Sie müssen einen password Client für Passport installieren. Sie haben installiert und konfiguriert Passport Angenommen, ein Passwort-Client zu generieren, auszuführen:

php artisan passport:client --password 

Stellen Sie sicher, die Details aus der Ausgabe dieses Befehls in Ihrer API-Anfragen zu verwenden.

+0

Es ist gleich .. Ich sollte etwas ändern? –

+0

Wie bearbeiten Benutzer-ID am Client? –

+0

Stellen Sie sicher, dass 'client_id' und' client_secret' mit denen übereinstimmen, die aus dem gerade ausgeführten Befehl generiert wurden. –