Я пытаюсь это сделать в течение некоторого времени, и я в настоящее время изучаю API и т.д. Теперь я пытаюсь подключить свое приложение к IBM xForce, чтобы получить здоровье клиента.
Я пытался использовать небольшие варианты этого кода:
function GetAuthToken(){
$Url = "https://api.xforce.ibmcloud.com/auth/AnonymousToken/";
//send request:
$Client = curl_init($Url);
curl_setopt($Client, CURLOPT_RETURNTRANSFER, 1);
//response:
$Response = curl_exec($Client);
//decode:
$Authorized = json_decode($Response);
$Token = $Authorized->token;
return $Token;
}
echo GetAuthToken();
Я действительно не знаю, что я делаю неправильно
Вот типичный ответ, который я получаю при обращении к URL-адресу в браузере:
{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyVW5pcXVlSUQiOiIyNWM0OTlkMS0yMjk4LTRjY2YtYTI1ZS1kODZmYzVlZGU2OTQiLCJ0eXBlIjoiYW5vbnltb3VzIiwiaWF0IjoxNDQxNjA5MTE0LCJleHAiOjE0NDE4NjgzMTR9.6a8YsIGfkIxghO7ypvMY7S9LQsR2CuiKO6b-jSAxm3U"}
Ты не сделал ничего плохого. Поскольку имя функции указывает: вы только что получили токен авторизации, который вам нужен, чтобы получить доступ к публичному API. Публичные запросы API (кроме /auth/anonymousToken
) требуют наличия допустимого токена авторизации в каждом заголовке запросов.
После того как вы извлекли этот токен, вы должны включить его со значением "Bearer" (обратите внимание на пробел в конце!), За которым следует строка токена в качестве значения его заголовка авторизации.
Пример: curl -I 'https://xforce-api.mybluemix.net/swagger.json/ipr/history/1.2.3.4' -H 'Accept-Language: en-US,' -H 'Authorization: Bearer $Token' -H 'Accept:application/json'
Эти токены авторизации сохраняются в течение трех дней. Вы можете периодически /refresh
существующие токены с помощью запроса /refresh
или запрашивать совершенно новый токен с запросом /auth/anonymousToken
.
Если вы используете одну из библиотек, вы можете сохранить соответствующую запись заголовка в xfeOptions
структуре: xfeOptions.headers.Authorization = 'Bearer ' + $Token
Подробнее об этом:
Обновление после комментария Кристиана Гареланда:
curl_setopt($Client, CURLOPT_VERBOSE, 1);
твой друг.
Соединения закрыты, поскольку cURL не может проверить сертификат SSL. Быстрое исправление заключается в добавлении curl_setopt($Client, CURLOPT_SSL_VERIFYPEER, false);
, здесь описывается правильное исправление.
function GetAuthToken(){
$Url = "https://api.xforce.ibmcloud.com/auth/AnonymousToken/";
//send request:
$Client = curl_init($Url);
curl_setopt($Client, CURLOPT_VERBOSE, 1);
curl_setopt($Client, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($Client, CURLOPT_SSL_VERIFYPEER, false);
//response:
$Response = curl_exec($Client);
//decode:
$Authorized = json_decode($Response, true);
$Token = $Authorized["token"];
return $Token;
}
echo "XF-API-Token: ". GetAuthToken();