Настройка instagram-node-lib с подписками

#javascript #node.js #express #instagram

#javascript #node.js #экспресс #Instagram

Вопрос:

Я хочу обновлять определенный хэштег в реальном времени и выводить изображение на экран. У меня возникли проблемы с настройкой моего node.js сервер, использующий модуль instagram-node-lib. Но я все еще получаю сообщение об ошибке при запуске файла (node server.js );

https://github.com/mckelvey/instagram-node-lib

вот моя реализация (server.js использование express 3.5.1):

 var express = require("express");
var app = express();
var port = process.env.PORT || 3000;
var io = require('socket.io').listen(app.listen(port));
var Instagram = require('instagram-node-lib');
var http = require('http');
var request = ('request');
var intervalID;

var pub = __dirname   '/public',
    view = __dirname   '/views';

var clientID = '*****',
    clientSecret = '*****';

Instagram.set('client_id', clientID);
Instagram.set('client_secret', clientSecret);
Instagram.set('callback_url', 'http://my_url.com/callback');
Instagram.set('redirect_uri', 'http://my_url.com');
Instagram.set('maxSockets', 10);

Instagram.subscriptions.subscribe({
  object: 'tag',
  object_id: 'lol',
  aspect: 'media',
  callback_url: 'http://my_url.com/callback',
  type: 'subscription',
  id: '3'
});

app.configure(function(){
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(app.router);
    app.use(express.static(pub));
    app.use(express.static(view));
    app.use(express.errorHandler());
});

app.get('/callback', function(req, res){
  Instagram.subscriptions.handshake(req, res);
});

app.post('/callback', function(req, res) {
    var data = req.body;
    // Grab the hashtag "tag.object_id"
    // concatenate to the url and send as a argument to the client side
    data.forEach(function(tag) {
      var url = 'https://api.instagram.com/v1/tags/'   tag.object_id   '/media/recent?client_id=******';
      sendMessage(url);

    });
    res.end();
});

console.log("Listening on port "   port);
  

Все кажется хорошим, но при запуске команды (node server.js ) Я получаю:

    info  - socket.io started
connect.multipart() will be removed in connect 3.0
visit https://github.com/senchalabs/connect/wiki/Connect-3.0 for alternatives
connect.limit() will be removed in connect 3.0
Listening on port 3000
APISubscriptionError occurred: Invalid response in _request
  

(У меня также есть сокет.там есть что-то вроде ввода-вывода, но я оставил это, чтобы сосредоточиться на проблеме.)

Ошибка APISubscriptionError напрямую связана с количеством подписок, которые я пытаюсь выполнить. В этом случае учитывается только один для тега «lol». Я просто хотел бы работать плавно без этой ошибки.

Ответ №1:

Я смог выяснить свою проблему, и она не была связана с Instagram-node-lib (которая, кстати, является больной библиотекой). Мне нужно было определить все мои URL какhttp://MY_URL.com:3000 потому что я работаю на порту 3000. Это создавало конфликт при попытке подписаться на мой URL обратного вызова. Чтобы сделать так, чтобы вам не нужно было использовать суффикс:3000, похоже, мне нужно будет создать прокси через nginx для порта 80 для запуска node через.