Доступ к API Youtube с помощью Meteor и пакета google-api percolate

Я только что начал свой первый метеоритный проект и пытаюсь получить доступ к API разработчика YouTube.

Я создал учетные данные разработчика в Google и включил пакеты google-api account-ui и percolate. Я могу успешно войти в систему с помощью учетных записей-ui, что означает, что мои настройки OAuth работают.

Затем я пытаюсь запустить что-то вроде этого на клиенте:

GoogleApi.get('youtube/v3/search',{
    part : 'snippet',
    q : 'cats',
    maxResults : 25
  },
  function(err,data) {
    !err ? console.log(data) : console.log(err);
  });

И я получаю следующую ошибку в консоли:

Error: failed [403] {  "error": {   "errors": [    {     "domain": "global",     "reason": "insufficientPermissions",     "message": "Insufficient Permission"    }   ],   "code": 403,   "message": "Insufficient Permission"  } } 

Я не уверен, неправильно ли я вызываю функцию, поскольку я не могу найти примеры использования функции GoogleApi.get() (и я новичок в метеоре), или моя учетная запись разработчика не правильно настроить, что ли.

Любая помощь или указатели, которые вы можете передать, очень ценятся. Спасибо!

Обновление: используя приведенное ниже предложение FullStack, мой окончательный код выглядел так:

var url = "https://www.googleapis.com/youtube/v3/search";
        var params = {
            key: {Google API Key}
            part: "snippet",
            q: searchTerm,
            maxResults: 25
        };
        Meteor.http.get(url, {params: params}, function (err, result) {
            console.log(result.statusCode, result.data);
            var retdata = result.data;
            Session.set("youtubeSearchItems", retdata.items);
        });

person Watseka    schedule 04.07.2015    source источник
comment
Для каких областей пользователь предоставляет авторизацию?   -  person abraham    schedule 06.07.2015
comment
В моей учетной записи разработчика я предоставил доступ к API YouTube для учетных данных проекта, которые я создал. Не уверен, что это то, что вы имеете в виду?   -  person Watseka    schedule 11.07.2015
comment
@Watseka, можете ли вы предоставить пример шаблона и полный js для вызова поиска и отображения его клиенту - я нуб-метеор, и у меня есть несколько проблем с этим. Когда я нажимаю кнопку поиска 2-й, 3-й (и т. д.) раз, новые результаты добавляются в контейнер... Можете ли вы помочь мне с этим?   -  person tsdexter    schedule 12.08.2015


Ответы (2)


Я рекомендую не использовать пакет google-api и просто выполнять вызов HTTP самостоятельно. Ниже приведен пример кода:

  var url = "https://www.googleapis.com/youtube/v3/search";
  var options = {
    'headers' : {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer ' + yourAccessToken,
      'X-JavaScript-User-Agent': "Google APIs Explorer"
    },
    'params' : {
       part : 'snippet',
       q : 'cats',
       maxResults : 25
    }
  };

  var searchResult = HTTP.get(url, options);

Убедитесь, что у вас установлен пакет HTTP: meteor add http Полную информацию см. в официальной документации Meteor по HTTP. .

person FullStack    schedule 06.07.2015

Пакет Percolate работает просто отлично. Проблема в том, что у вас есть insufficient permissions, как указано. Чтобы исправить это, вам нужно добавить области, необходимые для API, которые вы хотите использовать.

if (Meteor.isClient){
  var scopes = [
    'https://www.googleapis.com/auth/youtube',
  ];
  Accounts.ui.config({
    requestPermissions: {google: scopes}
  });
}

Я не знал, какой API YouTube вы имеете в виду, поэтому я выбрал Data. Есть также аналитика и прямая трансляция. Я получил указанную выше область действия с этой страницы:

https://developers.google.com/youtube/v3/guides/auth/client-side-web-apps

person Merlin -they-them-    schedule 25.01.2016