2015-08-25 4 views
1

Попытка сделать запрос POST с библиотекой запроса НПМ в Node.js, как так:Instagram API География Subscription Сообщение об ошибке

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

У вас есть тот же URL-адрес в настройках приложения instagram на instagram.com? 'HTTP: // локальный: 1337/авт/Instagram/callback'? – Shiva

+0

@ Шива Да, я делаю. В настройках клиента он запрашивает URL вашего сайта, который у меня есть как «http: // localhost: 1337 /», и URI перенаправления, который является «http: // localhost: 1337/auth/instagram/callback» и то, что я разместил как мой 'callback_url' выше. – bkal

ответ

1

Instagram не может получить доступ к localhost. забирали из API documentation:

When you add a subscription, we will send a GET request to your callback URL to verify the existence of the URL and that want to create the subscription. When we have new data, we'll POST this data to your callback URL. We'll explain more about what this URL needs to do later on this page.

Ваша проблема заключается в том, что их GET-request терпит неудачу, потому что они не могут получить доступ к localhost.

Вам необходимо либо передать порт 1337 в ваш маршрутизатор, либо использовать общедоступный IP-адрес. Вы также можете использовать localtunnel.me для настройки туннеля на свой локальный хост

+0

Спасибо за локальную ссылку - это меня достало! Я установил localtunnel в качестве моего callback_url, и я сделал запрос на обращение к URL-адресу обратного вызова, чтобы отправить hub.challenge. Я все еще получаю сообщение об ошибке: '' error_message ":« Ошибка проверки не выполнена. Отправлено \ "7a103f5b56244bc2b9adadd8f9996360 \ , получил \ "\ u003c! DOCTYPE html \ u003e \ n \ u003chtml lang' .... и т. д. – bkal

+0

Ваш URL-адрес обратного вызова должен ТОЛЬКО возвращать параметр, который Instagram отправляет вам, в вашем примере вы должны ТОЛЬКО возвращать 7a103f5b562 ... ни HTML, ни что-либо, просто параметр как обычный текст. И я думаю, что вы пропустили поток, это Instagram, который сделает GET к вашему URL-адресу обратного вызова, а не вам. Пожалуйста, смотрите здесь в разделе «Создать подписку»: https://instagram.com/developer/realtime/ – JOSEFtw

+0

I подумал, что это все, что я отправлял, - вот repl.it, если вы можете взглянуть - http://repl.it/BDqF – bkal