2017-01-16 1 views
0

Ich versuche, ein Token von Salesforce mit Laravel und Guzzle zu erhalten. Wenn Sie Postman ausprobieren, funktioniert der Login einwandfrei. Wenn ich meinen Endpunktanruf ausprobiere, erhalte ich einen nicht unterstützten_grant_type-Fehler.Laravel, Guzzle und Salesforce - Nicht unterstützte Erteilungsart

Hier ist mein Code:

public function login(LoginRequest $request) { 
    $client = new Client(); 

    $salesforce = new Request(
     'POST', 
     'https://test.salesforce.com/services/oauth2/token', 
     [ 
     'headers' => [ 
      'Content-Type' => 'application/x-www-form-urlencoded' 
     ], 
     'form_params' => [ 
      'username' => $request->email, 
      'password' => $request->password, 
      'client_id' => '<super_secret_id>', 
      'client_secret' => '<super_secret_secret>', 
      'grant_type' => 'password' 
     ] 
     ]); 

    $response = $client->send($salesforce); 
    } 
+0

Welche Version von Guzzle? – Kyslik

+0

Version 6.2 ist, was gezogen wurde. – Zamereon

+0

Haben Sie Dokumentation für Guzzle 6+ gelesen? – Kyslik

Antwort

1

Diese Fehlermeldung meistens bedeutet, dass sie nicht in Ihrer Anfrage 'grant_type' Parameter das finden.

Es scheint, Sie erstellen eine Anfrage mit Psr7 \ Request, 3. Parameter - Header. Sie senden Ihre Parameter als Kopfzeile.

prüfen dieses Beispiel:

public function login(LoginRequest $request) { 
    $client = new Client(); 

    $response = $client->request(
     'POST', 
     'https://test.salesforce.com/services/oauth2/token', 
     [ 
      'headers' => [ 
       'Content-Type' => 'application/x-www-form-urlencoded' 
      ], 
      'form_params' => [ 
       'username' => $request->email, 
       'password' => $request->password, 
       'client_id' => '<super_secret_id>', 
       'client_secret' => '<super_secret_secret>', 
       'grant_type' => 'password' 
      ] 
     ] 
    ); 

}

+0

Yup das hat funktioniert. Vielen Dank! – Zamereon