Как получить токены доступа OAuth через заголовок HTTP?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как получить токены доступа OAuth через заголовок HTTP?

Сообщение Anonymous »

Я использую API Battle.Net уже много лет, но на прошлой неделе Blizzard внесла изменения, и я понятия не имею, как заставить его работать. (Зачем ломать то, что не сломано...)
Вот что они написали:

Больше нельзя будет передавать токены доступа OAuth. через
строку запроса URL. Вместо этого эти токены должны быть включены в HTTP
заголовок запроса:
например. Авторизация: Носитель YOUR_CLIENT_TOKEN

Я понятия не имею, что это такое.
Я покажу вам свой код и надеюсь, что вы сможете мне помочь.
function getToken() {
$client_id = 'CLIENT ID';
$client_secret = 'CLIENT SECRET';
$url = "https://eu.battle.net/oauth/token";
$params = ['grant_type'=>'client_credentials'];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
curl_setopt($curl, CURLOPT_USERPWD, $client_id.':'.$client_secret);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($curl));
curl_close($curl);
return $result->access_token;
}
//call OAUTH2 function and set it to $token var
$token = getToken();

После этого я запрашиваю все карты «Поля сражений» и добавляю их в свою базу данных. Я запускаю этот код каждый раз, когда в игре происходят изменения с картами «Поля сражений».
$filename = 'https://eu.api.blizzard.com/hearthstone ... cale=en_US&
gameMode=battlegrounds&pageSize=1000&access_token='.$token;
$context = stream_context_create(array('http' =>
array('header'=>'Connection: close\r\n')));
$json = file_get_contents($filename,false,$context);
$obj = json_decode($json, true);
foreach ($obj['cards'] as $k => $cur) {
//Check if the card is new and doesn't exist in the database...
//INSERT INTO...
}

Это работало отлично в течение многих лет, однако из-за изменений оно останавливается после строки $filename со следующей ошибкой:
Warning: file_get_contents(https://eu.api.blizzard.com/hearthstone/cards?
locale=en_US&gameMode=battlegrounds&pageSize=1000&access_token=ACCESS TOKEN):
Failed to open stream: HTTP request failed! HTTP/1.1 401 Unauthorized in ****.php on line 155


Подробнее здесь: https://stackoverflow.com/questions/791 ... ttp-header
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»