YouTube API TypeError:回调不是函数

Posted

技术标签:

【中文标题】YouTube API TypeError:回调不是函数【英文标题】:YouTube API TypeError: callback is not a function 【发布时间】:2018-09-16 16:52:42 【问题描述】:

我试图用 nodejs https://developers.google.com/youtube/v3/docs/search/list#usage 收集这样的搜索结果

还有功能

function searchListByKeyword(auth, requestData) 
  var service = google.youtube('v3');
  var parameters = removeEmptyParameters(requestData['params']);
  parameters['auth'] = auth;
  service.search.list(parameters, function(err, response) 
    if (err) 
      console.log('The API returned an error: ' + err);
      return;
    
    console.log(response);
  );

函数必须返回搜索结果的集合,但在我的例子中它返回请求

$ node quickstart
Request 
  _events:
    error: [Function: bound ],
     complete: [Function: bound ],
     pipe: [Function] ,
  _eventsCount: 3,
  _maxListeners: undefined,
  url: 'https://www.googleapis.com/youtube/v3/search',
  method: 'GET',
  paramsSerializer: [Function],
  headers:
    'Accept-Encoding': 'gzip',
     'User-Agent': 'google-api-nodejs-client/28.1.0 (gzip) google-api-nodejs-client/0.12.0',
     Authorization: 'Bearer ya29.GluVBXvsx3nP15QlV-MqcypX1eEvDQ3BuXttbfQyR7ZlTpfO26sZnrh7Sl0sWsOCdGsJWHpHtE9XJv0jDqoWmVOZoJbQLqqQs3ujIPlATDQBHxu5nNorO8JBCE6y',
     host: 'www.googleapis.com' ,
  params:  maxResults: '25', part: 'snippet', q: 'surfing', type: 'qwe' ,
  maxContentLength: 2147483648,
  validateStatus: [Function],
  uri:
   Url 
     protocol: 'https:',
     slashes: true,

毕竟这会引发错误

C:\Users\wwwba\Desktop\youtube\node_modules\google-auth-library\lib\auth\oauth2client.js:341
        callback(err, result, response);
        ^

TypeError: callback is not a function
    at OAuth2Client.postRequest (C:\Users\wwwba\Desktop\youtube\node_modules\google-auth-library\lib\auth\oauth2client.js:341:9)
    at postRequestCb (C:\Users\wwwba\Desktop\youtube\node_modules\google-auth-library\lib\auth\oauth2client.js:297:23)
    at Request._callback (C:\Users\wwwba\Desktop\youtube\node_modules\google-auth-library\lib\transporters.js:113:17)
    at Request.self.callback (C:\Users\wwwba\Desktop\youtube\node_modules\request\request.js:186:22)
    at Request.emit (events.js:180:13)
    at Request.<anonymous> (C:\Users\wwwba\Desktop\youtube\node_modules\request\request.js:1163:10)
    at Request.emit (events.js:180:13)
    at IncomingMessage.<anonymous> (C:\Users\wwwba\Desktop\youtube\node_modules\request\request.js:1085:12)
    at Object.onceWrapper (events.js:272:13)
    at IncomingMessage.emit (events.js:185:15)

谁能告诉我我做错了什么。谢谢

【问题讨论】:

【参考方案1】:

解决方案比我想象的要简单。 我卸载 googleapis 和 google-auth-library 并安装它们的旧版本

 "google-auth-library": "^0.12.0",
 "googleapis": "^21.3.0"

google,为新版本重写您的 api 或警告我们必须安装旧版本

【讨论】:

感谢您为我工作!我猜谷歌的人没有时间为像我们这样的普通人更新文档:( 感谢您发布您找到的解决方案。 :) 考虑接受它,以便其他人可以看到问题已解决。

以上是关于YouTube API TypeError:回调不是函数的主要内容,如果未能解决你的问题,请参考以下文章

Youtube Data API V3 - 使用google.youtube.videos.list()获取视频时出错

YouTube API 错误,Node.js

Youtube Data API V3 - 使用 google.youtube.videos.list() 获取视频时出错

PHP for 循环不适用于 jQuery API(未捕获的 TypeError)

按下播放按钮后进行回调 - Youtube 嵌入视频

TypeError: jQueryxxxxxx 不是函数