Tôi đang sử dụng Guzzle để đăng nhập trang web API của mình và trong thời điểm Im đăng nhập bằng thông tin xác thực phù hợp, tôi lấy lại cookie với một RefreshToken để gửi nó trong cuộc gọi tiếp theo, đây là mã đơn giản (và hoạt động tốt) của tôi :GuzzleHttp: làm cách nào để lưu cookie từ phản hồi POST và sử dụng nó trong POST tiếp theo?
$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'),
]
]);
và tôi lấy lại phản ứng đúng với một cookie, tôi có thể nhìn thấy các tập tin cookie bằng cách sử dụng:
$newCookies = $response->getHeader('set-cookie');
bây giờ, tôi cần phải sử dụng cookie này trong các cuộc gọi tới, và tôi biết Guzzle có thể lưu các cookie cho tôi và gửi nó tự động (hoặc không) trong cuộc gọi tiếp theo bằng cách sử dụng một "CookieJar" hoặc "SessionCookieJar", tôi đã cố gắng sử dụng nó nhưng tôi không se e cookie trong 'jar', đây là những gì tôi đã làm:
$cookieJar = new SessionCookieJar('SESSION_STORAGE', true);
$client = new Client([
'cookies' => $cookieJar
]);
$response = $client->request ....
nhưng, khi tôi lấy cái bánh trở lại từ POST, tôi có thể nhìn thấy nó chỉ bằng cách sử dụng:
$newCookies = $response->getHeader('set-cookie');
và nó không có trong cookieJar, vì vậy nó sẽ không gửi nó trong cuộc gọi tiếp theo .. Tôi đang thiếu gì ở đây?
Cảm ơn bạn!
http://docs.guzzlephp.org/en/stable/quickstart.html#cookies. Bạn cần đặt jar cho yêu cầu đăng nhập để nó thu thập cookie – Phil
Cảm ơn câu trả lời của bạn, tôi đã cố gắng đặt nó trong yêu cầu và trong init client mới không có tác dụng (Tôi đã đọc hướng dẫn nhiều lần), bạn có thể vui lòng thêm một số mã? –