2017-07-17 9 views

Antwort

0

Wenn Sie Laravel Passport ordnungsgemäß eingerichtet, sollten Sie dies Ihrer Ansicht nach haben: enter image description here

Sie benötigen einen Client zu erstellen, dass Client hat eine Client-ID und ein Client-Geheimnis.

Jetzt müssen Sie Ihre Consumer-App öffnen, die Ihre Client-ID und Ihr Client-Geheimnis enthalten soll.

Es sieht wie folgt aus (Sie haben das Token und ID auf Ihre spezifischen ändern):

class OAuthController extends Controller 
{ 
    public function redirect() 
    { 
     $query = http_build_query([ 
      'client_id' => 3, 
      'redirect_uri' => 'http://localhost/app/public/callback', 
      'response_type' => 'code', 
      'scope' => '', 
     ]); 

     return redirect('http://localhost/app/public/oauth/authorize?' . $query); 
    } 

    public function callback(Request $request) 
    { 
     $http = new Client; 

     $response = $http->post('http://localhost/app/public/oauth/token', [ 
      'form_params' => [ 
       'grant_type' => 'authorization_code', 
       'client_id' => 3, // from admin panel above 
       'client_secret' => 'BcTgzw6YiwWUaU8ShX4bMTqej9ccgoA4NU8a2U9j', // from admin panel above 
       'redirect_uri' => 'http://localhost/app/public/callback', 
       'code' => $request->code // Get code from the callback 
      ] 
     ]); 

     return json_decode((string) $response->getBody(), true); 
    } 
} 

Jetzt müssen Sie, dass der Verbraucher App aufrufen und Ihre Anwendung zu genehmigen.

enter image description here

Wenn das funktioniert Du einen Zugriffstoken + eine Aktualisierungs-Token erhalten.

Es sollte wie folgt aussehen:

enter image description here

Jetzt können Sie diese mit einem Programm wie Postbote testen können.

Sie rufen im Grunde Ihre Route planen und fügen Sie den Zugriffstoken, die Sie auf die API zugreifen gibt, wie folgt aus:

enter image description here

Wenn Sie weitere Fragen haben empfehle ich die docs lesen.

Also ich empfehle dringend zu beobachten folgenden video von Taylor Otwell.

Natürlich können Sie mir auch einen Kommentar geben, wenn Sie weitere Fragen haben.

+0

Ich folgte Video Toturial und bekam den Bildschirm wie Sie gezeigt, aber immer noch Fehler bekommen. –

+0

Welcher Fehler, also solltest du hier nicht einfach Antworten geben, die nicht wirklich eher Kommentare beantworten, sonst werden Leute deine Frage ablehnen und du wirst wahrscheinlich keine Hilfe mehr bekommen – utdev

0

ich meine Antwort bekam: inside /resources/assets/js/bootstrap.js

diesen Code hinzufügen: window.axios.defaults.headers.common = { 'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content'), 'X-Requested-With': 'XMLHttpRequest' };

perfekt funktioniert ...

0

über den Pass Integration und Anbringen des CSRF Kopfzeilenproblem.

Eine mögliche Lösung besteht darin, die Middleware-Definition von der Route Deklaration zum Controller-Konstruktor zu verschieben.

dies:

Route::middleware('auth:api', 'throttle:60,1')->group(function() { 
    Route::get('tasks', 'Api\[email protected]')->name('tasks'); 
}); 

dann nach dem Entfernen der auth Middleware:

Route::middleware('api', 'throttle:60,1')->group(function() { 
    Route::get('tasks', 'Api\[email protected]')->name('tasks'); 
}); 

und es oben auf dem Controller-Konstruktor Einstellung:

<?php 
namespace App\Http\Controllers\Api; 
use App\Http\Controllers\Controller; 
class TasksController extends Controller 
{ 
    function __construct() 
    { 
     $this->middleware('auth'); 
    } 
    public function index() { // ... 
    } 

Es tut mir Leid nicht in der Lage zu sein um zu erklären, wie oder warum diese Optimierung funktioniert hat. Hoffe, ich werde das für eine bessere Erklärung später aktualisieren ..