Возникли проблемы с преобразованием этого кода Python в PHP, похоже, версия PHP не отправляет cookie.
Python:
jar = r.cookies.RequestsCookieJar()
jar.set('.ROBLOSECURITY', cookie, domain='.roblox.com', path='/')
resp = r.post(url = "https://auth.roblox.com/v2/logout", cookies=jar)
print (resp.content)
Моя попытка сделать это PHP:
$ch = curl_init("https://auth.roblox.com/v2/logout");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array()));
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_COOKIE, ".ROBLOSECURITY = " . $cookie);
$resp = curl_exec($ch);
print_r ($resp);
Вывод PHP:
HTTP/1.1 401 Unauthorized
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 83
Content-Type: application/json
Expires: -1
X-Frame-Options: SAMEORIGIN
Roblox-Machine-Id: RP-WEB1004
P3P: CP = "CAO DSP COR CURa ADMa DEVa OUR IND PHY ONL UNI COM NAV INT DEM
PRE"
Date: Sat, 27 Oct 2018 14:29:39 GMT
{"errors":[{"code":0,"message":"Authorization has been denied for this
request."}]}
При публикации на ресурсе выхода для получения X-CSRF-TOKEN код Python работает правильно, а код PHP - нет. Я попробую с типом контента и дам вам знать, как это происходит.
Для JSON API странно требовать cookie, но на первый взгляд это выглядит нормально. Есть ли причина, по которой вы публикуете сообщение на ресурсе выхода из системы, и какую-либо информацию из API о том, что еще может вызвать ошибку 401? Кроме того, даже если вы на самом деле не передаете никаких данных json, вам не удалось установить тип содержимого json.