Я использую 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
Как получить токены доступа OAuth через заголовок HTTP? ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1730708534
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/cards?locale=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
Подробнее здесь: [url]https://stackoverflow.com/questions/79154686/how-to-get-oauth-access-tokens-via-http-header[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия