Я пытаюсь подключиться к менеджеру Gimbal Restful API. У меня есть учетная запись и API-ключ для моей организации. Мой запрос cURL продолжает терпеть неудачу с несанкционированным ответом 401 от конечной точки API. Вот мой Curl запрос в PHP:Ошибка аутентификации Gimbal API с 401 неавторизованным (запрос PHP cURL)
// from Gimbal Manager:
define('ORG_API_KEY', 'XXXXXXXXXXXXXXXXX') ;
// new beacon registration object:
$post = array (
"factory_id" => "XXXX-XXXXX",
"name" => "NewBeacon",
"latitude" => 12345
"longitude" => 67890,
"visibility" => "public"
);
$url = "https://manager.gimbal.com/api/beacons";
$headers = array(
'AUTHORIZATION: Token token=' . ORG_API_KEY,
'Content-type: application/json'
) ;
$debug = 1 ;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
if ($debug) {
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($curl, CURLINFO_HEADER_OUT, true);
}
curl_setopt($crl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($crl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$result = curl_exec($ch);
(редактирования) и здесь заголовок запроса (от $ headerSent вар выше)
POST /api/beacons HTTP/1.1
Host: manager.gimbal.com
Accept: */*
Content-Length: 577
Expect: 100-continue
Content-Type: multipart/form-data; boundary=----------------------------ce1a4e9dd55e
и вот ответ от Gimbal:
HTTP/1.1 401 Unauthorized
Cache-Control: no-cache
Content-Type: text/html; charset=utf-8
Date: Sat, 29 Aug 2015 20:05:10 GMT
Server: Apache
Status: 401 Unauthorized
Vary: Accept-Encoding
WWW-Authenticate: Token realm="Application"
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Request-Id: 7abe53cd-d161-4886-bb61-8cfedf71743a
X-XSS-Protection: 1; mode=block
Content-Length: 27
Connection: keep-alive
HTTP Token: Access denied.
Я попробовал несколько различных способов выражения AUTH Токеном:
AUTHORIZATION: <$token>
AUTHORIZATION: Token <$token>
AUTHORIZATION: Token token=<$token>
Все они дают одинаковый ответ 401. Я заметил, что другие билеты здесь и в других местах описывают аналогичную проблему, но ни один из них не был отмечен как разрешенный.
Неужели кому-нибудь удалось связаться с API-интерфейсом Gimbal Manager? Если это так, изменился ли ваш код?
Только что обнаружил, что флаг TRUE в CURLOPT_HTTPHEADER предотвращает передачу переменных заголовка, что вызывает проблему аутентификации. Теперь я получаю статус: 400 Bad Request в моем ответе. Когда я получу это, я опубликую результаты –