2016-12-08 5 views
0

Ich arbeite mit einem RESTful API und ich möchte alle seine Daten erhalten. So weit, so gut, aber ich möchte es sicherer machen. Ich möchte das API-Token nicht direkt in die URL eingeben. Ich möchte Guzzels Auth-Funktion verwenden, aber es wird nicht funktionieren.Guzzle hinzufügen API-Schlüssel zu URL

Beispiel: Die Basis-URL ist https://example-api-site.com und ich möchte weitere Informationen erhalten, so dass ich gehen auf die Website /location.name?lang=en&input=someLocation&authKey= statt hier die authkey der Verwendung (das funktioniert) Ich habe die Auth Funktion

-Code verwenden möchten:

$authKey = 'authKey123'; 
$client = new \GuzzleHttp\Client(['base_uri' => 'https://example-api-site.com']); 
$response = $client->request('GET',"/location.name?lang=en&input=someLocation&authKey=",[ 
    'auth' => [$authKey, null]  
]); 
echo $body = $response->getBody(); 

der Ausgang des Echos "ungültig auth-Schlüssel:"

ich jeden Kommentar zu schätzen wissen!

+0

Es hängt davon ab, wie die API Auth behandeln. Wenn die Dokumentation Ihnen gesagt hat, dass Sie "authKey" als URL-Parameter verwenden sollen, müssen Sie dies tun. – Vuldo

+0

Hey, danke für deine Antwort. Ja, es ist ein Parameter. Wenn ich auf einen dieser Links klicke, fügen sie diese Zeile '& authKey =' hinzu. Also gibt es keine sichere Option dafür? – thissven

+1

Dies hängt wirklich vom API-Provider ab, da Sie die Auth nicht besitzen, können Sie nicht tun, was Sie wollen, wenn sie diese Art von Auth verwenden, können Sie nicht anders tun – Vuldo

Antwort

0

Sie können für Roh-Authorization-Header suchen:

$response = $client->get('YOUR_ENDPOINT', [ 
    'Authorization' => [ 
     'Basic ' . base64_encode('[email protected]:password') 
    ] 
]); 
+0

Würde es Ihnen etwas ausmachen, dies in meinem Beispiel zu verwenden? Weil meine Version davon nicht funktioniert – thissven

+0

können Sie mehr Informationen über Ihre API doc geben? – softwarevamp

0

'auth' Option ist für Basis-Authentifizierung, es ist nicht das gleiche wie GET-Parameter. Wenn also die API nur GET-Parameter akzeptiert, bleiben Sie dabei.

BTW, Sicherheit durch Dunkelheit ist keine echte Sicherheit. Sie verwenden bereits HTTPS, daher sehe ich keine Gründe, sich Sorgen zu machen.