尝试使用Node.js中的npm请求库发出POST请求,如下所示:
var path = require('path');
var express = require('express');
var request = require('request');
var app = express();
module.exports = app;
var data = {
client_id: 'XXX',
client_secret: 'XXX',
object: 'geography',
aspect: 'media',
lat: 35.657872,
lng: 139.70232,
radius: 1000,
callback_url: 'http://localhost:1337/auth/instagram/callback'
};
var options = {
uri: 'https://api.instagram.com/v1/subscriptions/',
method: 'POST',
form: data
};
request(options,
function (err, response, body) {
console.log(body, "body");
console.log(err, "error");
});
但收到此错误:
{"meta":{"error_type":"APISubscriptionError","code":400,
"error_message":"Invalid URL. The URL may be on a private network."}}
有关如何解决这个问题的建议吗?
非常感谢任何帮助。现在无法在几天内设置订阅,并被告知我需要在服务器端而不是客户端执行此操作,所以这就是我现在所处的位置。
答案 0 :(得分:1)
Instagram无法访问您的localhost
。
取自API documentation:
当您添加订阅时,我们会向您的回调网址发送GET请求,以验证是否存在该网址以及是否要创建订阅。当我们有新数据时,我们会将此数据发布到您的回调网址。我们将在本页后面详细介绍此URL需要执行的操作。
您的问题是他们的GET-request
失败了,因为他们无法访问您的localhost
。
您需要在路由器中移植端口1337
或使用公共IP。您还可以尝试使用localtunnel.me设置到本地主机的隧道