私はGuzzleを使用してAPIサイトにログインしていますが、正しい資格情報でログインすると、RefreshTokenを含むCookieが返され、次の呼び出しで送信されます。これが私の単純な(そしてうまく機能する)コードです。
$client = new Client(array(
'cookies' => true
));
$response = $client->request('POST', 'http://myapi.com/login', [
'timeout' => 30,
'form_params' => [
'email' => $request->get('email'),
'password' => $request->get('password'),
]
]);
そして、Cookieを使用して正しい応答を返します。次を使用して、Cookieを確認できます。
$newCookies = $response->getHeader('set-cookie');
今、私は次の呼び出しでこのCookieを使用する必要があり、GuzzleがCookieを保存して、「CookieJar」または「SessionCookieJar」を使用して次の呼び出しで自動的に(または送信しないで)送信できることを知っています。それでも、「jar」にCookieが表示されません。これが、私が行ったことです。
$cookieJar = new SessionCookieJar('SESSION_STORAGE', true);
$client = new Client([
'cookies' => $cookieJar
]);
$response = $client->request ....
しかし、POSTからCookieを取り戻すと、次を使用することによってのみCookieを表示できます。
$newCookies = $response->getHeader('set-cookie');
cookieJarにはないので、次の呼び出しでは送信されません。ここで何が欠けていますか?
ありがとうございました!
ドキュメントによると ここ 、['cookies' => true]
は、すべてのリクエストに共有Cookie jarを使用することを示し、['cookies' => $jar]
は特定のクッキージャーの使用を示しました($jar
)クライアントの要求/応答で使用します。したがって、次のいずれかを使用する必要があります。
$client = new Client(array(
'cookies' => true
));
$response = $client->request('POST', 'http://myapi.com/login', [
'timeout' => 30,
'form_params' => [
'email' => $request->get('email'),
'password' => $request->get('password'),
]
]);
// and using the same client
$response = $client->request('GET', 'http://myapi.com/next-url');
// or elsewhere ...
$client = new Client(array(
'cookies' => true
));
$response = $client->request('GET', 'http://myapi.com/next-url');
または
$jar = new CookieJar;
$client = new Client(array(
'cookies' => $jar
));
$response = $client->request('POST', 'http://myapi.com/login', [
'timeout' => 30,
'form_params' => [
'email' => $request->get('email'),
'password' => $request->get('password'),
]
]);
// and using the same client
$response = $client->request('GET', 'http://myapi.com/next-url');
// or elsewhere ...
$client = new Client(array(
'cookies' => $jar // the same $jar as above
));
$response = $client->request('GET', 'http://myapi.com/another-url');