2017-10-28 3 views
1

Ich versuche, eine Token-Anfrage mit guzzle zu machen und eine Fehlermeldung" 400 Bad Request "Antwort: {" Fehler ":" ungültiger_client "}". Ich kann die gleiche Anfrage mit cURL und HTTP_Request2 ohne Problem machen.Guzzle - 400 Schlechte Anfrage "Antwort: {" Fehler ":" invalid_client "} - wenn Token Anfrage

<?php 
    require 'vendor/autoload.php'; 
    use GuzzleHttp\Client; 
    use GuzzleHttp\Exception\RequestException; 
    use GuzzleHttp\Psr7\Request; 

    session_start(); 
    if(isset($_GET['code'])){ 
     $code = $_GET['code']; 
     $encodeB64 = base64_encode('{clientID}:{clientSecret}'); 
     $client = new GuzzleHttp\Client(); 
     $response = $client->request('POST', 'https://identity.reckon.com/connect/token',[ 
     ['headers' => ['Content-Type' => 'application/x-www-form-urlencoded'],['Authorization' => 'Basic '.$encodeB64]], 
     ['body' => ['grant_type' => 'authorization_code'],['code' => $code],['redirect_uri' => '{redirectURI}']] 
     ]); 
     $body = $response->getBody(); 
     echo $body; 
    } 

Dies sind die Details, wie ein Token-Anforderung mit dieser API zu machen:

URL: https://identity.reckon.com/connect/token

Typ: POST

Körper: grant_type = authorization_code & code = {code } & redirect_uri = {Weiterleitungs-URL}

Kopfzeilen:

  • Content-Type = application/x-www-form-urlencoded

  • Authorization: Grund {Client-ID: secret-Client in base64 codiert}

nicht sicher, wo ich bin falsch machen.

+0

versuchen, die Anfrage-String an den api-Server gesendet zu überprüfen dort etwas los auf der Saite sein könnte, bevor seine auf den api Server diese Gehäuse innerhalb mitgeschickt bekommen [und] sind die, die gerade Darstellung oder wie sind sie wirklich im Code implementiert? –

Antwort

0

Ich habe es ausgearbeitet. Die Antwort war folgende:

<?php 
    require 'C:/Users/Shane/vendor/autoload.php'; 
    use GuzzleHttp\Client; 
    use GuzzleHttp\Exception\RequestException; 
    use GuzzleHttp\Psr7\Request; 

    session_start(); 
    if(isset($_GET['code'])){ 
     $code = $_GET['code']; 
     $encodeB64 = base64_encode('{client id}:{client secret}'); 
     $authbody = 'grant_type=authorization_code&code='.$code.'&redirect_uri={redirect url}'; 
     $client = new GuzzleHttp\Client(); 
     $response = $client->request('POST', 'https://identity.reckon.com/connect/token',['headers' => 
      ['Content-Type' => 'application/x-www-form-urlencoded','Authorization' => 'Basic '.$encodeB64], 
      'body' => $authbody]); 
     $body = $response->getBody(); 
     echo $body;