尝试使用instagram api和节点获取具有特定标记的图像列表

时间:2016-04-03 07:36:09

标签: node.js instagram

使用Instagram API我正在调用端点。 https://api.instagram.com/v1/tags/MYTAG/media/recent?access_token=MYACCESSTOKEN

从我的应用程序调用与来自apigee.com的调用时,我收到了不同的结果。不同之处在于access_token。

当我使用https://apigee.com/console/instagram并进行instagram api通话时,我会收到8张图片。 (用我的Instagram信用卡登录后),这是我所期望的。

如果我使用我的nodejs应用程序使用相同的信用卡登录,我会获得一个不同的身份验证令牌(您可以假设),但我得到一个空的数据集。

{ pagination: { next_min_id: 'STUFF', min_tag_id: 'STUFF' },
  meta: { code: 200 },
  data: [] 
}

我一定很遗憾。 任何人都可以在我的nodejs代码中看到我可能做错了什么 谢谢你的帮助

这是nodejs代码:::

var https = require('https');
var http = require('http');
var express = require('express');
var app = express();
var fs = require("fs");

var client_id = "CLIENT_ID";
var client_secret = "CLIENT_SECRET";

var redirect_uri = 'https://MYDOMAIN/handleauth';
var authorize_link = 'https://api.instagram.com/oauth/authorize/?client_id=' + client_id + '&redirect_uri=' + redirect_uri + '&response_type=code';

app.get('/authorize_user', function (req, res) {
    res.redirect(authorize_link);
});

app.get('/handleauth', function (req, res) {
    res.send("ok");

    if (req.query['code']) {
        var request = require('request');
        var post_data = {
            'client_id': client_id,
            'client_secret': client_secret,
            'grant_type': 'authorization_code',
            'redirect_uri': redirect_uri,
            'code': req.query['code']
        };
        var headers = {
            'User-Agent': 'Super Agent/0.0.1',
            'Content-Type': 'application/x-www-form-urlencoded'
        }

        var post_options = {
            url: 'https://api.instagram.com/oauth/access_token',
            method: 'POST',
            headers: headers,
            form: post_data
        };
        request(post_options, function (error, response, body) {
            if (error || response.statusCode != 200) {
                console.error(error);
            } else {
                var pbody = JSON.parse(body);
                console.log('Response: ' + pbody);
                console.log('pbody.access_token: ' + pbody.access_token);
                var options = {
                    url: 'https://api.instagram.com/v1/tags/MYTAG/media/recent?access_token='+pbody.access_token,
                    method: 'GET'
                };
                request(options, function (error, response, body) {
                    if (error && response.statusCode != 200) {
                        console.error(error);
                    }else{
                        var jsonobjArr = JSON.parse(body);
                        console.log(jsonobjArr);
                    }
                });

            }
        });

    }
});
var options = {
    key: fs.readFileSync("/ssl_certs/me.key"),
    cert: fs.readFileSync("/ssl_certs/me_bundle.crt")
};
https.createServer(options, app).listen(4000, function () {
    console.log("HTTPS Express Instagram server listening on port " + 4000);
});

1 个答案:

答案 0 :(得分:0)

You're in Sandbox Mode.

数据仅限于来自每个用户的10个用户和20个最新媒体。

我意识到这一点,因为我只能从我发布的标签中接收数据。 您的问题帮助我弄清楚如何生成访问令牌。我无法让node-rest-client工作。谢谢!

我的建议是建立最好的应用程序来缓解审批流程。