Итак, я работаю над приложением, которое сравнивает данные канала youtube с другими каналами similare youtube.
В настоящее время я работаю над аутентификацией пользователя с его учетной записью YouTube, поэтому я использую OAuth-клиент.
Я уже получил код, который я могу обменять на access_token
, который также работает.
К сожалению, access_token
, который я получаю, не работает для простого / поискового вызова и дает мне HTTP 400 -> keyinvalid
Тот же вызов прекрасно работает с сгенерированным ApiKey, но я бы предпочел использовать OAutch.
Мой вопрос: не работает ли accessToken с публичными вызовами, такими как / search? Если да, то в чем может быть моя проблема?
Заранее спасибо!
РЕДАКТИРОВАТЬ: добавлены примеры кода
Шаг 1: я вызываю OAuth-клиент со следующим URL-вызовом в новом окне с window.open(url)
https://accounts.google.com/o/oauth2/v2/auth?
scope=https://www.googleapis.com/auth/youtube.readonly&
access_type=offline&
include_granted_scopes=true&
state=state_parameter_passthrough_value&
redirect_uri=https://website.com/&
response_type=code&
client_id=9791...7bng.apps.googleusercontent.com"
В ответе я извлекаю код, который выглядит примерно так
4/1QCLZnwsntp...sNcE
Отправьте этот код через API REST в мой бэкэнд, который использует этот код для обмена на access_token
с PHP curl POST call
$this->connection = curl_init();
$url = 'https://www.googleapis.com/oauth2/v4/token';
$param = 'code='.$this->credentialsTemp['code'].'&client_id='.$GLOBALS['Youtube-Credentials']['clientId'].'&client_secret='.$GLOBALS['Youtube-Credentials']['clientSecret'].'&redirect_uri=https://website.com/&grant_type=authorization_code';
curl_setopt($this->connection, CURLOPT_URL, $url);
curl_setopt($this->connection, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($this->connection, CURLOPT_TIMEOUT, 20);
curl_setopt($this->connection, CURLOPT_POST,true);
curl_setopt($this->connection, CURLOPT_POSTFIELDS, $param);
$resp = curl_exec($this->connection);
curl_close($this->connection);
$acces_token = json_decode($resp,true)["access_token"];
в $acces_token
должен быть мой access_token, который в данный момент выглядит близко к этому ya29.GlyTBtFMdLqKbvgaps...SA2pBORo_Am5UuBuxo8g