в
отаю над REST API. Поэтому я подготовил функцию, которая отправляет данные аутентификации через curl на REST-сервер. Я реализовал два варианта аутентификации. Первый - базовая аутентификация, второй - аутентификация через токен (Bearer).
Теперь я в тройке, потому что на сервере REST данные POST не принимаются сервером REST в случае аутентификации через токен. Сама аутентификация работает, но данные POST будут потеряны. В случае аутентификации с помощью базовой аутентификации данные POST будут получены сервером REST, без проблем.
private function request($postdata){
$url = $this->service_url_private;
$curl = curl_init($url);
$curl_post_data = $postdata;
// check if token authentication is used
if (array_key_exists('token', $postdata )){
$token = $postdata['token'];
$authorization = 'Authorization: Bearer ' . $token;
// prepare curl for Bearer Token Authorization
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization));
} else {
// otherwise use BASIC authentication
if (array_key_exists('email', $postdata )){
$username = $postdata['email'];
}
if (array_key_exists('password', $postdata )){
$password = $postdata['password'];
}
// prepare curl for Basic Authentication
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
curl_setopt($curl, CURLINFO_HEADER_OUT, true); // Detail information for debugging
curl_setopt($curl, CURLOPT_VERBOSE,true);
$curl_response = curl_exec($curl); // Detail information for debugging
$info = curl_getinfo($curl); // Detail information for debugging
curl_close($curl);
var_dump($info);
return $curl_response;
}
Кроме того, $ curl_post_data показывает все данные клиентом во время отладки, прежде чем вызов rest будет выполнен с помощью curl_exec ($ curl).
В чем может быть проблема?