【发布时间】:2016-04-03 07:36:08
【问题描述】:
我正在使用 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);
});
【问题讨论】: