Перейти к содержимому


× Быстрый вопрос
Пользователь месяца
Андрей WPM Андрей WPM 1-й за Июль
Очков активности: 2 142 4 темы, 90 сообщений, 14 баллов репутации
Сайт: wpmaster.kz
ТОП самых активных за этот месяц
  • Фотография Rodiola
    #1

    Rodiola (rukodelkovo.ru)
    Очков активности: 780 3 темы, 95 сообщений, 5 баллов репутации

  • Фотография maxnik
    #2

    maxnik (konovalovpavel.ru)
    Очков активности: 369 0 тем, 41 сообщение, 6 баллов репутации

  • Фотография Андрей WPM
    #3

    Андрей WPM (wpmaster.kz)
    Очков активности: 144 Вне конкурса за определение пользователя месяца

  • Фотография IxMaster
    #4

    IxMaster (site.ru)
    Очков активности: 139.5 3 темы, 22 сообщения, 3 балла репутации

  • Фотография Megoydagi
    #5

    Megoydagi (24ho.ru)
    Очков активности: 93 5 тем, 16 сообщений, 2 балла репутации

  • Фотография lena220678
    #6

    lena220678
    Очков активности: 87 3 темы, 20 сообщений, 2 балла репутации

  • Фотография annabum
    #7

    annabum
    Очков активности: 75 2 темы, 19 сообщений, 2 балла репутации

  • Фотография Vmir
    #8

    Vmir
    Очков активности: 57 Вне конкурса за определение пользователя месяца

  • Фотография FIvYUr
    #9

    FIvYUr (moy-evroopt.ru)
    Очков активности: 36 0 тем, 8 сообщений, 3 балла репутации

  • Фотография Constantine
    #10

    Constantine (constantine.video.blog)
    Очков активности: 31.5 3 темы, 12 сообщений, 1 балл репутации

  • Показать весь ТОП 10
Поддержите форум! =)
Апдейты
  • Яндекс ИКС: 30.07.2019
  • Яндекс выдача: 23.08.2019
Топ 5 участников по репутации


Google apiclient:~2.0

#1 Вячеслав

Вячеслав
  • Пользователь
  • 383 сообщений
  • Репутация: 3
0

Отправлено 05 Январь 2018 - 18:40

Приветствую форумчане, всех с НГ и РХ !!!

 

Хочу научится работать с Youtube API, установил composer и поставил php библиотеку от гугла https://github.com/y...tree/master/php

 

php composer.phar require google/apiclient:~2.0

 

 

Хочу использовать вот этот скрипт для загрузки роликов на ютуб со своего сайта https://github.com/y...able_upload.php

 

Но вот беда, не понимаю что указывать в 

 

$OAUTH2_CLIENT_ID
$OAUTH2_CLIENT_SECRET
 
Если указываю вот это https://yadi.sk/i/ImBnckR13RDM8J
 
То при обращении к скрипту на странице вот такая ошибка с ссылкой 
 

 

 

Authorization Required

You need to authorize access before proceeding.

 

 
 
 
А если перейти по этой ссылке то вот такое: https://yadi.sk/i/6uu4n2hN3RDMDe
 
 
 
Собственно вопрос в том что там указывать, и где оно находится? Подскажите камрады кто работал с этим API!
 
 
 
 

 

 

  • 0

#2 WebJunior

WebJunior
  • Неактивные
  • 60 сообщений
  • Репутация: 9

Отправлено 05 Январь 2018 - 19:47

А ты создал проект в console.developers.google.com?

 

Параметры 

$OAUTH2_CLIENT_ID $OAUTH2_CLIENT_SECRET

 

 

Нужно брать оттуда.


  • 0

#3 Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 383 сообщений
  • Репутация: 3

Отправлено 05 Январь 2018 - 20:04

@Разгильдяев, ну вроде да https://yadi.sk/i/1HafRICx3RDThR

 

 

Если указываю вот это https://yadi.sk/i/ImBnckR13RDM8J

 

Или где нужно? 


  • 0

#4 WebJunior

WebJunior
  • Неактивные
  • 60 сообщений
  • Репутация: 9

Отправлено 05 Январь 2018 - 20:13

@Вячеслав, Да здесь только выбрать нужно апи ютуба. youtube data api v3. Судя по форме не похоже, что ты выбрал именно api ютуба.


Сообщение отредактировал Разгильдяев: 05 Январь 2018 - 20:15

  • 0

#5 Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 383 сообщений
  • Репутация: 3

Отправлено 05 Январь 2018 - 20:20

@Разгильдяев, вот же https://yadi.sk/i/b5JzAE4C3RDUpV

 

и оно включено https://yadi.sk/i/OP-Zmnw33RDUr8


  • 0

#6 WebJunior

WebJunior
  • Неактивные
  • 60 сообщений
  • Репутация: 9

Отправлено 05 Январь 2018 - 20:34

@Вячеслав, Ну всё тогда порядок. Копируй оттуда client_id и secret_id и вставляй в соответствующие переменные в скрипте. 


  • 0

#7 WebJunior

WebJunior
  • Неактивные
  • 60 сообщений
  • Репутация: 9

Отправлено 05 Январь 2018 - 21:13

Да забыл сказать. Если тебе нужен бесконечный токен необходимо параметр approval_prompt вставить в значение force. Иначе каждый час придётся запрашивать новый access_token. Я 4 дня из поиска не вылазил искал инфу на тему почему refresh_token не приходит вместе с основным. Нервов потратил много. Так что имей ввиду.

В клиентской библиотеки гугла есть метод setApprovalPrompt() вот там и нужно прописать этот параметр, что бы токен можно было запросить без повторной авторизации.


Сообщение отредактировал Разгильдяев: 05 Январь 2018 - 21:14

  • 2

#8 Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 383 сообщений
  • Репутация: 3

Отправлено 05 Январь 2018 - 23:46


approval_prompt
так я это и передаю.... https://yadi.sk/i/0SvgQqpl3RDhHY но результат тот же...

 

approval_prompt
в этом скрипте почему то нет упоминания об этом вообще, искал поиском по файлу, не понимаю где его указывать.

 

Блин что же не так я делаю... 


  • 0

#9 WebJunior

WebJunior
  • Неактивные
  • 60 сообщений
  • Репутация: 9

Отправлено 06 Январь 2018 - 03:05

@Вячеслав, А там подвох заключается в том, что метод в библиотеки существует, но о его существовании можно узнать от сторонних ресурсов потому что на сайте гугла api задокументирован ужасно очень много нюансов не описано. Я когда делал скрипт для заливки видосов на ютуб думал поседею) Я 4 дня практически жил в гугле и на странице с api. Сейчас уже поздно плоха соображаю если сам не разберёшься то завтра попытаюсь помочь. 

@Вячеслав, Чувак у тебя в secret_id название проекта из консоли гугла. Это явно не то, что нужно.

Во я блин туплю! Есть вариант гораздо удобней. Скачай из консоли гугла файл secret_id.json и заюзай метод setAuthConfig. У меня это реализовано так.

 

	$client = new Google_Client();
	$client->setAuthConfig('./client_id.json');
	$client->setAccessType('offline');
	$client->setApprovalPrompt("force");
	$client->setScopes('https://www.googleapis.com/auth/youtube');
	$redirect = filter_var('http://' . $_SERVER['HTTP_HOST'] . '/auth.php', FILTER_SANITIZE_URL);
	$client->setRedirectUri($redirect);

Как видишь ничего лишнего. Всё красиво и сексуальненько) Параметры client_id и secret_id лежат отдельно в json файле который парситься клиентской библиотекой и уже сам скрипт решает, что куда подставлять тебе остаётся только прописать корректный путь к конфиг файлу.

 

 

Забыл ещё кое-что. Для вечных токенов Access Type должен быть в значении offline.


HxBo4uiUR2_-d-tUeXjbbA.png

 

Конфиг о котором я говорил качай вот здесь. Только имя ему человеческое дашь потому что там по дефолту лютая жесть не запоминаемая. Надеюсь смог помочь если нет завтра продолжим.


Сообщение отредактировал Разгильдяев: 06 Январь 2018 - 03:00

  • 1

#10 Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 383 сообщений
  • Репутация: 3

Отправлено 07 Январь 2018 - 16:10

Не могу найти где это скачивать, у меня почему то не так все как у тебя на скриншоте https://yadi.sk/i/9U5dup_D3RFKKA

 

Вот что у меня https://yadi.sk/i/uV_E92cF3RFKPd


  • 0

#11 WebJunior

WebJunior
  • Неактивные
  • 60 сообщений
  • Репутация: 9

Отправлено 10 Январь 2018 - 20:25

@Вячеслав, Пардон за долгий ответ. Должно быть как-то так.

Screenshot_1.png

 

Screenshot_2.png

 

Screenshot_3.png

 

Screenshot_4.png

 

Дальше делаешь то о чём я говорил выше. Тебе не нужены учётные данные сервисных аккаунтов. Я просто видел у тебя на скриншоте пару сервисных аккаунтов. Для твоей задачи тебе это не требуется.

 

P.S Превьюшки у скринов не очень так, что ты кликай по ним, что бы развернуть во весь экран.


Сообщение отредактировал Разгильдяев: 10 Январь 2018 - 20:29

  • 0

#12 Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 383 сообщений
  • Репутация: 3

Отправлено 12 Январь 2018 - 01:18

@Разгильдяев, Спасибо большое что помогаете, но пока не получилось...

 

Я создал "Идентификаторы клиентов OAuth 2.0"  https://yadi.sk/i/XzJtdPIH3RNyKt

 

скачал файл JSON с параметрами и загрузил его https://podvoh.tv/wp...conf_oauth.json

 

в файле пробую так:

$client = new Google_Client();
$client->setAuthConfig($_SERVER['DOCUMENT_ROOT'].'/wp-content/themes/podvoh/asset/google_apiclient_conf_oauth.json');
$client->setAccessType('offline');
$client->setApprovalPrompt("force");
$client->setScopes('https://www.googleapis.com/auth/youtube');

И без $_SERVER['DOCUMENT_ROOT'] тоже не работает

 

и вот так тоже

$OAUTH2_CLIENT_ID = '231339854934-u3a114mr3l0b2576lu3ovidaerhpp0ih.apps.googleusercontent.com';
$OAUTH2_CLIENT_SECRET = 'LSjebQWM1Z-AXIWOlWApDrV2';
$client = new Google_Client();
$client->setClientId($OAUTH2_CLIENT_ID);
$client->setClientSecret($OAUTH2_CLIENT_SECRET);
$client->setScopes('https://www.googleapis.com/auth/youtube');

Результат тот же: https://podvoh.tv/resumable_upload.php

 


Authorization Required

You need to authorize access before proceeding.

 

 

Не понимаю что еще не так...

 

 

 

 


  • 0

#13 WebJunior

WebJunior
  • Неактивные
  • 60 сообщений
  • Репутация: 9

Отправлено 13 Январь 2018 - 20:01

@Вячеслав, Ну да логично. Авторизацию то ты не прошёл. Почитай про то как работает o2auth стандарт это должно прояснить некоторые нюансы. В общих чертах картина следующая.

Для авторизации нужно перейти по специальной ссылке которая перебросить тебя на страницу авторизации. Гугл спросит согласен ли ты дать такому-то приложению право на доступ к твоему ютуб аккаунту. После того как ты дашь добро на доступ приложения к твоему аккаунту гугл сделает редирект на домен указанный в настройках проекта(вспоминаем про консоль) с get-параметром code. Этот параметр позволяет запросить токен. Строку из параметра code нужно поместить вот сюда. 

 

$client->authenticate($_GET['code']); 

 

Метод authenticate возвращает токен в формате json в таком виде.

{"access_token":"ya29.GlvzBFu0WUl6eV72QxGLJbcEqcZV5a17LU85a8iQ94BgnHLttzQbNpd0yEJHhtRC0tBQee5SQQqpMKh3j-eS8Eh8TvAJwPh6nXB7zv5vKD0In88_f_EqtOr","token_type":"Bearer","expires_in":3600,"refresh_token":"1\/AWKjkOddWy2oDMEHvq-2qD6rnGG-vifNb4BWcFBlDd2apXnNp-rXJfHcFEgu","created":1509287793}
 

json по умолчанию сохраняется в сессии, но можно хранить в файлах. Мне удобней держать в файлах. Если воспользуешься данным способом хранения то доступ к файлам в которых будет хранится токен нужно закрыть через .htaccess.

 

Вообще код который отвечает за авторизацию лучше всего внести в отдельный php файл. Я сделал таким образом.

 

Screenshot_2.png

 

 

Что делает данный код? Он делает очень простую вещь. Когда ты авторизуешься и гугл редиректит тебя на страницу которую ты указал в настройках проекта. Метод authenticate цепляет строку из get-параметра code. Этот метод в свою очередь возвращает json с токеном который сохраняется в файле. Затем этот токен считывается из файла тогда, когда требуется доступ к youtube api.


Да забыл сказать. Для того, что бы выполнить какой либо метод из гугл апи нужно перед этим обязательно запросить сохранённый ранее токен. За это отвечает метод getAccessToken. Ну точнее не запросить, а проверить его актуальность. Так, как токен живёт всего 1 час нужно следить за тем, что бы он был актуален.

 

Для того, чтобы получить ссылку для авторизации приложения можно воспользоваться данным методом createAuthUrl он генерирует ссылку опираясь на данные которые прописаны в конфиге.

 

 

После перехода по ссылке ты увидишь вот такое окно.

4xc2m.png

 

 

Дальше всё будет так, как я описал выше. Сложно в одном посте описать все нюансы поэтому прошу прощение за сумбур.

 

Наверное мне нужно создать отдельную тему про особенности работы с youtube data api)


Сообщение отредактировал Разгильдяев: 13 Январь 2018 - 20:09

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Похожие темы

  Название темы Автор Статистика Последнее сообщение

Оформление форума – IPBSkins.ru