Я работаю над новым проектом Meteor, который включает пользователей, регистрирующихся на сайте, используя свои учетные записи Google через OAuth (для этого я использую учетные записи Meteor - пакет google) и при входе мне нужно, чтобы они могли видеть некоторые данные из API YouTube Analytics для своего канала YouTube. На данный момент данные, которые я пытаюсь получить, - это их ежедневные просмотры, которые я надеюсь показать на графике в течение определенного периода времени.Доступ к API YouTube в проекте Meteor для зарегистрированного пользователя
я добавил следующие области действия моих счетов-Google система Логин:
Meteor.loginWithGoogle({
requestPermissions: ['https://www.googleapis.com/auth/userinfo.email', 'https://www.googleapis.com/auth/userinfo.profile', 'https://www.googleapis.com/auth/yt-analytics.readonly', 'https://www.googleapis.com/auth/youtube.readonly'],
requestOfflineToken: true,
forceApprovalPrompt: true,
loginStyle: "popup"
});
Все это, кажется, работает очень хорошо, когда пользователь знаки в сайт и предоставляет доступ к сайтам с этим я могу затем просмотрите необходимую информацию в моей базе данных MongoDB. В user.services.google теперь я могу видеть, что у него есть accessToken, idToken, expiresAt, refreshToken и т. Д.
Я также решил использовать google api nodejs client, выполнив его через метеорологи: пакет npm для Meteor. Я использую это для обновления токенов (как видно из этого SO answer, я нашел полезным).
Использование "Try It" API Explorer, на странице API Documentation YouTube Analytics, можно получить тип данных, я ищу через этот запрос:
GET https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel%3D%3DMINE&start-date=2015-10-01&end-date=2015-10-31&metrics=views&dimensions=day&sort=-day&key={YOUR_API_KEY}
Теперь то, где я был полностью застрял и действительно не уверен, куда идти отсюда. Как я могу реализовать это на своем сайте? Я пробовал довольно долгое время, чтобы выполнить эту работу, но все, что я пытаюсь, не работает, и нет никакого реального направления. Если кто-то захочет помочь, я бы очень признателен. Я довольно новичок в Meteor/JS/API, поэтому любая информация/примеры чрезвычайно ценится, особенно дружелюбный материал noob! ;)
Большое спасибо за ответ, я определенно собираюсь попробовать это и надеюсь, что смогу заставить его работать! У меня есть только один вопрос: как было бы лучше всего ввести «CHANNEL_ID_OF_MY_USER» и «ACCESS_TOKEN_OF_MY_USER»? На данный момент я вижу, что токен доступа хранится в services.google.accessToken. Идентификатор канала, похоже, не хранится нигде в «пользователях», но я предполагаю, что могу как-то сохранить его в профиле пользователей.Я просто не знаю, как это ввести эти данные в Meteor.call? – U54
Я пытался использовать Publish/Subscribe для этого, но ханжеств», кажется, чтобы заставить его работать .. У меня есть это в моем server.js: Meteor.publish („access_token“, функция() { \t \t возвращения Метеор .users.find (this.userId, {fields: {'services.google.accessToken': 1}}); \t}); // Затем я подписываю в клиенте: Meteor.subscribe («access_token»); // а затем я пытаюсь заменить «ACCESS_TOKEN_OF_MY_USER» на «access_token», но, похоже, это вообще не работает. Любые идеи о том, где я ошибаюсь, или как я мог бы достичь чего-то подобного? – U54
Привет @ U54! Подписка дает вам право доступа к опубликованным данным. Поэтому вам нужно сделать так: «let user = Meteor.users.findOne ({_ id: Meteor.userId()})', где вы хотите получить данные и получить доступ к вашему токену, используйте эту переменную: 'user. services.google.accessToken'. –