YouTube OAuth 2.0 — GET-запрос на получение значения NULL от var_dump ();

Я работаю с 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/

0

Решение

Это, кажется, недоразумение как реализовать OAuth 2.0.

Эта пошаговая инструкция представляет собой резюме сайта, на который я ссылался:

  1. создать идентификатор клиента для веб-приложения в консоли разработчика
  2. Заставьте вашего пользователя перейти на URL авторизации
  3. когда он завершит процесс, пользователь будет перенаправлен на указанный вами адрес перенаправления.
  4. на этой странице ваш PHP-скрипт должен захватить code-запрос ($_GET['code'])
  5. Затем вы должны сделать запрос (содержащий код) на страницу, которая предоставляет вам токен доступа и токен обновления. Срок действия токена доступа истекает через 1 час, затем вы должны получить новый с токеном обновления
  6. как только у вас есть токен доступа, вы можете начать делать запросы API

На сайте, указанном сверху, вы найдете подробные инструкции.
Надеюсь это поможет 🙂

ОБНОВИТЬ

Чтобы обменять код на токены, вы должны выполнить почтовый запрос. Я не думаю, что я буду работать с 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 отключена. Это означает, что ваше соединение небезопасно.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]