2017-10-30 2 views
0

Ich verstehe nicht, wie das Token senden:Konsumieren API mit Laravel Pass

$response = $client->request('GET', '/api/user', [ 
'headers' => [ 
    'Accept' => 'application/json', 
    'Authorization' => 'Bearer '.$accessToken, 
], 

]);

Wenn ich ein HTML-Formular habe, wie kann ich das Token senden, um die API zu konsumieren?

Dank

+0

https://laravel.com/docs/5.5/passport#consuming-your-api-with-javascript "Diese Passport-Middleware fügt Ihren ausgehenden Antworten einen Laravel_Token-Cookie hinzu. Dieser Cookie enthält eine verschlüsselte JWT, die Passport zum Authentifizieren von API-Anfragen aus Ihrer JavaScript-Anwendung verwendet. Jetzt können Sie Anfragen an die API Ihrer Anwendung senden, ohne explizit ein Zugriffstoken zu übergeben. " – ceejayoz

+0

Aber wenn ich eine andere App verwende, um den Laravel-API-Pass zu verwenden, wie kann ich diese Parameter senden? –

Antwort

0

Sie müssen zuerst in der API authentifizieren die bekommen Token und senden Sie dann jede andere Anfrage mit diesem Token.

Beispiele mit Curl: erste

Authentifizierung:

$curl = curl_init(); 

    curl_setopt_array($curl, array(
     CURLOPT_URL => "http://laravel-app-with-passport.com/api/someurl", 
     CURLOPT_RETURNTRANSFER => true, 
     CURLOPT_ENCODING => "", 
     CURLOPT_MAXREDIRS => 10, 
     CURLOPT_TIMEOUT => 30, 
     CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
     CURLOPT_CUSTOMREQUEST => $method, 
     CURLOPT_POSTFIELDS => null, // here you can send parameters 
     CURLOPT_HTTPHEADER => array(
      "accept: application/json", 
      "authorization: " . $_SESSION['TOKE_TYPE'] . " " . $_SESSION['TOKEN'] . "", 
      "cache-control: no-cache", 
      "content-type: application/json", 
     ), 
    )); 

    $response = curl_exec($curl); 
    $err = curl_error($curl); 
    curl_close($curl); 

    var_dump($response); 

auch:

$curl = curl_init(); 

    curl_setopt_array($curl, array(
     CURLOPT_URL => "http://laravel-app-with-passport.com/oauth/token", 
     CURLOPT_RETURNTRANSFER => true, 
     CURLOPT_ENCODING => "", 
     CURLOPT_MAXREDIRS => 10, 
     CURLOPT_TIMEOUT => 30, 
     CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
     CURLOPT_CUSTOMREQUEST => "POST", 
     CURLOPT_POSTFIELDS => "grant_type=password&client_id=".$outhCliendIdGeneratedInLaravelPassport ."&client_secret=".$OuthClientSecretGenerateInLaravelPassport ."&username=". $validLaravelUserName . "&password=" . $validLaravelUserPassword, 
     CURLOPT_HTTPHEADER => array(
      "accept: application/json", 
      "content-type: application/x-www-form-urlencoded", 
     ), 
    )); 

    $response = curl_exec($curl); 
    $err = curl_error($curl); 

    $responseInfo = curl_getinfo($curl); 

    curl_close($curl); 

    if ($err) { 
     set_error_handler($err); 
    } else { 

     if ($responseInfo['http_code'] == 200) { 

      $_SESSION['TOKEN'] = json_decode($response)->access_token; 
      $_SESSION['TOKE_TYPE'] = json_decode($response)->token_type; 

     } else { 

      set_error_handler("Login to api faild status 403"); 
      error_log("No login api status 403"); 

     } 
    } 

Dann können Sie das Token und verbrauchen jede URL in der api senden Wie bereits erwähnt, können Sie anstelle von Curl Guzzle HTTP Client verwenden (https://github.com/guzzle/guzzle)