2

我正在尝试使用Instagram 实时 api ,但我无法使其工作。我创建了一个 express.js 服务器来响应订阅创建时的质询验证。我收到包含订阅详细信息的 json 响应,我可以从 Instagram API 列出我当前的订阅。

一切正常......除了我没有收到 POST 请求。任何想法?

问候!

4

1 回答 1

-1
var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var request = require('request');

var bodyParser = require('body-parser');
app.use(bodyParser.json());

var CLIENT_ID ='';
var CLIENT_SECRET = '';
var CALLBACK_URL = 'http://website.com/subscribe';

app.get('/:object/:object_id', function (req, res) {
    var object = req.params.object;
    var object_id = req.params.object_id;

    io.on('connection', function (socket) {
        request.post('https://api.instagram.com/v1/subscriptions/', {form: {
            client_id: CLIENT_ID,
            client_secret: CLIENT_SECRET,
            aspect: 'media',
            object: object,
            object_id: object_id,
            callback_url: CALLBACK_URL
        }});

        socket.on('disconnect', function() {
            request.del('https://api.instagram.com/v1/subscriptions?client_secret='+CLIENT_SECRET+'&object=all&client_id='+CLIENT_ID)
        });
    });

    res.sendFile(__dirname + '/public/index.html');
})

app.get('/subscribe', function(req, res){
    res.send(req.query['hub.challenge']);
});

app.post('/subscribe', function (req, res) {
    io.emit('message', JSON.stringify(req.body));
})

http.listen(process.env.PORT);

索引.html

<!doctype html>
<html>
  <head>
    <title>htag</title>
  </head>
  <body>
    <div id="stream"></div>
    <script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
    <script src="https://cdn.socket.io/socket.io-1.3.4.js"></script>
    <script>
      var socket = io(window.location.origin);
      socket.on('message', function (text) {
        $('#stream').prepend('<p>' + text);
      });
    </script>
  </body>
</html>
于 2015-05-09T01:02:00.673 回答