it-swarm.com.de

Guzzle HTTP - Autorisierungsheader direkt in Anfrage einfügen

Kann jemand erklären, wie der Berechtigungsheader in Guzzle hinzugefügt wird? Ich kann sehen, dass der Code unten funktioniert, um den Benutzernamen und das Kennwort hinzuzufügen, aber in meiner Instanz möchte ich nur den Autorisierungsheader selbst hinzufügen

$client->request('GET', '/get', ['auth' => ['username', 'password']

Den Basic Authorization-Header, den ich meiner GET-Anfrage hinzufügen möchte: -

Basic aGdkZQ1vOjBmNmFmYzdhMjhiMjcwZmE4YjEwOTQwMjc2NGQ3NDgxM2JhMjJkZjZlM2JlMzU5MTVlNGRkMTVlMGJlMWFiYmI=
17
Zabs

Wie es aussieht, versuchen Sie, einen API-Schlüssel zu verwenden. Um den gewünschten Effekt zu erzielen, geben Sie einfach null als Benutzernamen ein (siehe unten).

$client->request(
    $method,
    $url,
    [
        'auth' = [
            null,
            $api_key
        ],
    ]
);
6
Shaun Bramley

Ich habe keine Ahnung, wie ich gelesen habe, dass Sie nach dem Basic-Header für auth gesucht haben, aber ich hoffe, dass dies etwas hilft. Wenn Sie nur den Autorisierungsheader hinzufügen möchten, sollte dies ziemlich einfach sein.

// Set various headers on a request
$client->request('GET', '/get', [
'headers' => [
    'Authorization'     => 'PUT WHATEVER YOU WANT HERE'
    ]
]);

Ich baue meine Anfrage in Guzzle Stück für Stück auf, daher verwende ich Folgendes:

$client = new GuzzleHttp\Client();
$request = $client->createRequest('GET', '/get');
$request->addHeader('X-Authorization', 'OAuth realm=<OAUTH STUFF HERE>');
$resp = $client->send($request);

Hoffentlich hilft das. Stellen Sie außerdem sicher, dass Sie die Version der Bibliotheken einschließen, die Sie in Zukunft verwenden, da sich die Syntax je nach Version ändert.

20
Matt D.

Ich verwende Guzzle 6. Wenn Sie das grundlegende Auth-Schema verwenden möchten:

$client = new Client();
$credentials = base64_encode('username:password');
$response = $client->get('url',
        [
            'headers' => [
                'Authorization' => 'Basic ' . $credentials,
            ],
        ]);
9
Agu Dondo
use GuzzleHttp\Client;

... 

$client = new Client(['auth' => [$username, $password]]);
$res = $client->request('GET', 'url', ['query' => ['param1'=>$p1, 'param2'=>'sometext']]);
$res->getStatusCode();
$response = $res->getBody();

Dadurch wird ein autorisierter Client erstellt und eine Get-Anforderung mit den gewünschten Parametern gesendet

0
Grigoreas P.