Instagram实时OAuthParameterException:缺少client_id或access_token URL参数。在_request

时间:2017-06-07 23:11:23

标签: javascript node.js instagram

我正在尝试设置Instagram实时订阅。我是NodeJS的新手,所以想到从GitHub设置项目。我已经尝试了几个回购,它们最终都会出现同样的错误。

OAuthParameterException occurred: Missing client_id or access_token URL parameter. in _request

我目前正在使用以下代码:https://github.com/weblancaster/instagram-real-time

我从注册我的应用开始,为回调网址设置了一个heroku实例,获得了带有范围public_content和follower_list的access_token。

server.js中,我将YOUR_CLIENT_ID和YOUR_CLIENT_SECRET替换为从https://www.instagram.com/developer/clients/manage/获取的client_id和client_secret值 另外,我为access_token添加了值,正如文档所述

  

Instagram API需要来自经过身份验证的用户的access_token   对于每个端点。我们不再支持仅使用   CLIENT_ID。

接下来我尝试订阅标签(​​第38-45行)。 这会导致错误消息

OAuthParameterException occurred: Missing client_id or access_token URL parameter. in _request

解决错误的尝试:

根据建议here,我在Instagram-node-lib/lib/class.instagram.js中添加了以下代码行。这没有解决错误。

options['headers']['Content-Type'] = 'application/x-www-form-urlencoded';

我修改了Instagram-node-lib/lib/class.instagram.subscription.js中的订阅功能以包含verify_token。这也没有解决错误。

InstagramSubscriptions.prototype._subscribe = function(params) {
          var i, _i, _len, _ref;
          params['method'] = "POST";
          params['path'] = "/" + this.parent._api_version + "/subscriptions/";
          if ((typeof params['callback_url'] === 'undefined' || params['callback_url'] === null) && this.parent._config.callback_url !== null) {
            params['callback_url'] = this.parent._config.callback_url;
          }
          params['post_data'] = {
            object: params['object'],
            aspect: 'media',
            client_id: this.parent._config.client_id,
            client_secret: this.parent._config.client_secret,
            verify_token: this.parent._config.access_token,
            callback_url: params['callback_url']
          };
          _ref = ['object_id', 'verify_token', 'lat', 'lng', 'radius'];
          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
            i = _ref[_i];
            if (params[i] != null) {
              params['post_data'][i] = params[i];
            }
          }
          return this.parent._request(params);
        };

Instagram-node-lib中的2个更改是使用

编译的
install npm --save https://github.com/zunman/instagram-node-lib/tarball/master

我的package.json更新版本的node,nom,instagram-node-lib如下所示。

{
  "name": "RealTimeInstagram",
  "version": "0.0.1",
  "description": "Real time instagram",
  "author": "Michael Lancaster",
  "dependencies": {
    "express": "3.21.2",
    "instagram-node-lib": "https://github.com/zunman/instagram-node-lib/tarball/master",
    "jade": "1.3.1",
    "request": "2.34.0",
    "socket.io": "1.7.4"
  },
  "engines": {
    "node": "6.9.1",
    "npm": "3.10.8"
  }
}

我不确定我错过了什么。非常感谢任何有关错误的帮助。

P.S。 我在this项目中遇到了同样的错误。

1 个答案:

答案 0 :(得分:1)

Instagram API不再支持标签订阅: https://www.instagram.com/developer/changelog/

  

2015年11月17日或之后创建的应用

     
      
  • ...

  •   
  • 对代码,地理位置和地理位置的实时订阅弃用

  •   

不确定他们为什么这样做,但即使你摆脱了这个错误,你也不会收到标签更新。

我正在尝试同样的事情,但以下行实际上对我有效(至少关于错误输出,'因为没有任何通知我的应用程序):

options['headers']['Content-Type'] = 'application/x-www-form-urlencoded';

您可以使用应用中的计时器或其他内容来处理“最近的媒体标记”端点(https://www.instagram.com/developer/endpoints/tags/#get_tags_media_recent),并不时进行搜索。不是最好的世界,但应该有效。