X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Работа с youtube api
WebJunior_mw
WebJunior_mw
Topic Starter сообщение 18.1.2018, 22:20; Ответить: WebJunior_mw
Сообщение #1


Всем доброго времени суток!) Эту тему я создаю ни с целью получить помощь, а наоборот для того, что бы помочь тем у кого возникают сложности при работе с youtube api. Вдохновил меня на написание данного топика форумчанин @Вячеслав который испытывал(или испытывает до сих пор) трудности при работе с youtube api. Увидев его тему я вспомнил сколько дней провёл в гугле, и на странице самого youtube api. Сколько я нервных клеток угробил... Подсчитать это на вряд ли получится.

В общем всё это подвигло меня к написанию данного топика. 

Данный топик я разобью на две части. В первой части я коротко опишу подготовительный процесс. Покажу, что нужно сделать для того, что бы начать работать с youtube data api. И во второй части я представлю скрипт который я написал с целью упростить жизнь всем кому потребуется заливать видео на youtube со своего сайта.

Итак начнём!

Первое, что необходимо сделать это посетить ресурс расположенный по данному url https://console.developers.google.com

для того, что бы создать проект и настроить учётные данные. Серия скриншотов проиллюстрирует этот процесс наглядно.

Создаём проект

Xj_UBZQdQ_2fbWWOdswl8A.png


Затем необходимо включить youtube api. Думаю все знают, что у гугла много различных сервисов поэтому и различных api тоже много.

OtcLtLqETe_i6SrXjgS-yA.png



Выбираем из списка youtube data api


_2WeI7e9RX6gbuh3Q6ZDtg.png




FyFeeFlZTxeYCsY2tqXOVg.png



Создаём учётные данные

_WdaqOt4Szq-XLlIGyPyWw.png





WEXj5FWvQCeeSykwFgqNww.png



Указываем url на который будет осуществляться редирект после после успешной авторизации.


rZLkfRX1SuS5U7zulEn2Ag.png

Если авторизация прошла успешно то гугл перенаправит вас на url указанный в настройках учётных данных и добавит к урлу get-параметр code. В моём случаи это будет выглядеть примерно так. test.io/youtube_api/auth.php?code=1fsdf1er7c541vr04er 

В случаи ошибки соответственно параметра code не будет.

Затем нужно будет скачать json файл с учётными данными для чего это нужно объясню позже.


Прикрепленное изображение



Теперь я представлю свой скрипт о котором говорил выше. Пойдём по порядку.
Вот главный файл.

app.php

R55gldkmRm_ChwHwrOTFkw.png


Разберём код.

Функция clientInit является обёрткой для методов из библиотеки гугла которые отвечают за настройки.
Выглядит это таким образом. Это по сути конфиг.



QUi4bqFDTIaQQGnHdTfQBw.png


Я обещал объяснить для чего нужен json файл с учётными данными. Самые внимательные думаю заметил строчку с методом setAuthConfig данный метод позволяет не много сократить код. 

Для того, что бы прописать client_id и client_secret нужно использовать методы

setClientId($OAUTH2_CLIENT_ID);
setClientSecret($OAUTH2_CLIENT_SECRET);

Ну, а так, как я использую setAuthConfig данные методы можно не использовать так, как client_id и client_secret уже хранятся в json файле и библиотека гугла сама будет считывать эти данные.


Теперь покажу как работает авторизация.

lBKWk0GsR-egamC1DbcL2Q.png


В общем-то всё просто. Я выше писал, что в случаи успешной авторизации гугл перенаправляет вас на урл указанный в настройках с get-параметром code. Данный параметр нужен, чтобы запросить токен. За это отвечает метод authenticate. Затем метод getAccessToken возвращает токен в формате json который записывается в файл.

С этого момент я хочу сделать не большое отступление, что бы пояснить зачем я записываю токен в файл когда есть сессии. И на сайте с документацией примеры показаны именно с сессией. Дело в том, что мне скрипт нужно было запускать из консоли(почему рассказывать не буду это долгая история) а в случаи если скрипт запускается через консоль апач при таком раскладе не задействован и никаких сессий в серверном окружении соответственно нет. К тому же если скрипт планируется использовать на сайте где каждый юзер будет загружать видео которые потом будет заливаться на ютуб то в этом случаи сессии так же не подойдут по понятным причинам. Поэтому считают, что держать токен в файле самый разумный вариант.


Единственно, что у меня вызывает сомнение это то, что токен нужно постоянно считывать из файла так, как для того, что бы обратится к api нужно пред этим скормить токен гугловской библиотеки с помощью метода setAccessToken по другому это не работает. По этой причине токен нужно постоянно считывать из файла. Этот скрипт хорошо работает для одного пользователя, но если пользователей будет много я не знаю как он себя проявит. Но думаю, что считывать каждый раз 214 байт данных это не критично. Именно столько весит json файл с токеном.


Ну и напоследок покажу как у меня реализован механизм авто обновления токенов и на этом пожалуй всё. Все остальные файлы проекта я выложу на гитхаб и оставлю ссылочку на репозиторий если администрация не будет против.


xtqSeZOwQE6VNqtidqDg2A.png


Тут комментировать особо нечего, но пару слов всё таки скажу. Как я уже говорил гугл предоставляет токен в виде json'а в нём по мимо токена содержится дата создания токена так, как токен живёт всего один час это очень важно. 

Да чуть не забыл. Токены хранятся в двух файлах. В одном файле хранится так сказать первичный токен вместе с которым приходит ещё и refresh_token с помощью которого мы и будем в дальнейшем обновлять access_token когда срок его действия истечёт. Обновлённый токен возвращается уже без refresh токена именно поэтому требуется два файла. Если хотите более подробно разобраться в этом вопросе почитайте про то как устроен стандарт oauth2. Идём дальше.

Первое условие проверяет жив ли ещё токен, что бы не пришлось сразу запрашивать новый токен. Один из файлов отведённых под токены нужен нам всего один раз в течении часа пока жив access_token в дальнейшем из него будет считываться только refresh_token. 

Второе условие так же проверяет просрочен токен или нет. Если просрочен то с помощью refresh токена запрашивается новый и записывается в файл. Ну а третье условие по сути нужно для того, что бы установить токен перед тем как воспользоваться методами гугловской библиотеки. 

Как вы заметили в основном скрипте я использую метод autoRefreshToken он как раз и нужен для того, что бы токен либо обновить либо считать из файла ранее полученный токен если он ещё не просрочен.
 
Важное замечание! У гугла есть лимит на количество запрашиваемых токенов насколько я знаю за сутки токен можно запросить повторно 24 раза. Но если обновлять токен ровно через час то этого лимита как раз должно хватить на сутки.

Так же есть лимит на количество запросов по api. На сутки выделяется квота в виде баллов. Каждый метод расходует квоту индивидуально.

Вот так это выглядит.

UwEgrDvSThulroYLXVXCdw.png

Пока тестировал скрипт почти 5000 единиц квоты истратил) Так что если захотите юзать api ютуба для сайтов с хорошей посещаемостью подумайте хватит ли вам суточного лимита.


Ну вот всё. Не судите строга мне раньше не приходилось писать такие длинные мемуары)) Кто дочитал до конца тому полагается орден мужества))) Длинный получился топик, но не обессудьте старался как можно подробней всё объяснить, что бы всем было понятно. Надеюсь, что читать эту гору текста было как минимум не скучно) Ну а если кому-то это было полезно то я буду только рад. Когда я начинал разбираться в этом вопросе ничего толкового по данной теме на просторах онлайна я не нашёл. Думаю этот топик поможет сэкономить вам нервные клетки. А я пошёл пилить репозиторий на гитхабе как только будет готово скину ссылку. Если конечно админы не будут против.
Чьёрт побери забыл совсем)) Странно вроде склерозом не страдаю)

MzSax1LGT6ieJtkAYrVJLA.png


Прикрепленное изображение


Вот теперь всё! Хотел показать, что скрипт работает.

 


Сообщение отредактировал Разгильдяев - 18.1.2018, 23:04
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Medvedoc_mw
Medvedoc_mw
сообщение 9.10.2018, 2:04; Ответить: Medvedoc_mw
Сообщение #2


Интересная статья ))) надо потестировать будет. Побольше бы подобных статей по работе с api соцсетей.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) ✅ sms.chekons.com - ⭐ Сервис для получения SMS на реальные номера USA "Non-VoIP, безлим SMS, API" ⭐
Сервис для получения SMS на реальные номера USA
10 Chekon 3582 24.3.2024, 14:15
автор: Chekon
Открытая тема (нет новых ответов) Не получается оплатить YouTube Premium (для Турции и Аргентины по VPN YouTube Premium недоступна)
3 rownong27 445 20.3.2024, 21:39
автор: MisterBit
Открытая тема (нет новых ответов) Базы Youtube кейвордов с данными по конкуренции и Volume
3 Krok 1033 20.3.2024, 14:59
автор: ManagerAE8888
Горячая тема (нет новых ответов) TopSmm.ru Накрутка Вконтакте/Instagram/YouTube и др. Гарантия на докрутку и самые низкие цены!
74 KalininDima 38610 15.3.2024, 16:12
автор: KalininDima
Открытая тема (нет новых ответов) Интеграция спортивных данных API. Коэффициенты БК, Live результаты
14 yaroslav89 6631 13.3.2024, 23:16
автор: spoyer_ru


 



RSS Текстовая версия Сейчас: 29.3.2024, 17:38
Дизайн