Я работаю с YouTube OAuth 2.0 и у меня возникли некоторые проблемы. Я использовал этот пример и дошел до стадии, когда канал Google проходит проверку подлинности и перенаправляет обратно с кодом.
При попытке отправить запрос GET, чтобы получить некоторые данные канала из областей OAuth, я получаю ответ «NULL», и я не уверен, почему.
(Validate содержит рабочий запрос)
echo "<a href='$validate'>Login with Google for advanced analytics</a>";$channel_data = file_get_contents('https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel%3D%3DMINE&start-date=2014-08-01&end-date=2014-09-01&metrics=views&key={api_key}');
$channel_data = json_decode($channel_data, true);
echo "<br />";
var_dump($channel_data);
Кажется, работает в примере запроса найдено https://developers.google.com/youtube/analytics/v1/
Это, кажется, недоразумение как реализовать OAuth 2.0.
Эта пошаговая инструкция представляет собой резюме сайта, на который я ссылался:
code
-запрос ($_GET['code']
)На сайте, указанном сверху, вы найдете подробные инструкции.
Надеюсь это поможет 🙂
ОБНОВИТЬ
Чтобы обменять код на токены, вы должны выполнить почтовый запрос. Я не думаю, что я буду работать с file_get_contents
, Я рекомендую использовать локон Вот.
Этот код должен работать для вас, но он не проверен:
$url = 'https://accounts.google.com/o/oauth2/token';
$postfields = [
'code'=>'YOUR_CODE',
'client_id'=>'YOUR_CLIENT_ID',
'client_secret'=>'YOUR_CLIENT_SECRET',
'redirect_uri'=>'YOUR_REDIRECT_URI',
'grant_type'=>'authorization_code'
];$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_POST, count($postfields));
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postfields));
$response = curl_exec($curl);
curl_close($curl);
$response = json_decode($response);
$response
сейчас это ассоциативный массив с ключами access_token, token_type, expires_in, refresh_token
, token_type
всегда Bearer
а также expires_in
всегда 3600
, Два других являются важными, и вы должны хранить их безопасно!
Вы можете найти свой идентификатор клиента и секрет клиента в консоли разработчика.
Но учтите, что в этом примере проверка ssl отключена. Это означает, что ваше соединение небезопасно.
Других решений пока нет …