Подписка на Instagram 408 Тайм-аут запроса через 2 секунды

В настоящее время я пытаюсь создать механизм "синхронизации с Instagram" для пользователей моего веб-сайта MVC, используя функцию подписки на Instagram. Теперь у меня все настроено правильно, как они описывают на своей странице API:

  • Я направляю пользователя на страницу авторизации, успешно получая авторизацию.
  • Я создал метод GET и POST для метода обратного вызова. Метод GET для проверки, работает ли он там, работает с описанными параметрами (hub.mode=subscribe&hub.challenge=test&hub.verify_token=mytoken), который возвращает вызов в случае успеха, и я выставил его в Интернете с помощью ngrok (который тоже работает)
  • Затем я пытаюсь подписаться на пользователя, который падает сразу через 2 секунды с тайм-аутом 408 запроса. GET-запрос к URL обратного вызова никогда не происходит.

Я также попытался немного изменить то, что я посылаю в этом пост-инстаграме. Если я что-то изменяю, вместо таймаута я получаю неверный запрос. Я также попытался создать свой собственный веб-клиент, чтобы увеличить время ожидания веб-запросов, но безуспешно.

Кто-нибудь имеет представление о том, что я делаю неправильно, или где можно получить больше информации о том, что действительно не удалось? Документация на Instagram довольно отсутствует.

Вот код, который падает с 408:

        NameValueCollection parameters = new NameValueCollection();
        parameters.Add("client_id", "SECRET"); 
        parameters.Add("client_secret", "SECRET");
        parameters.Add("object", "user");
        parameters.Add("aspect", "media");
        parameters.Add("verify_token", VerifyToken);
        parameters.Add("callback_url", new Uri(baseUri, "api/manage/instagramSubscription").AbsoluteUri);

        var client = new WebClient();
        var result = client.UploadValues("https://api.instagram.com/v1/subscriptions/", "POST", parameters);

РЕДАКТИРОВАТЬ: РЕШЕНИЕ ДЛЯ РЕШЕНИЯ ПРОБЛЕМЫ

Теперь проблема была как в решении tompec, чтобы избежать ngrok. Я пытался связаться с Instagram, почему Ngrok не работает, но не ответил, как всегда. Я переключился на функцию Azure, чтобы иметь возможность быстро проверить обратный вызов, который делает Instagram. было несколько раздумий по пути, но теперь это работает. Мне пришлось переписать код для вызова, хотя, потому что Instagram принимает только данные формы для этого вызова.

var encoding = new ASCIIEncoding();
        var postData = "client_id=YOURCLIENTID";  
        postData += "&client_secret=YOURSECRET"; 
        postData += ("&object=user");
        postData += ("&aspect=media");
        postData += ("&verify_token=" + VerifyToken);
        postData += ("&callback_url=" + baseUri.AbsoluteUri);
        byte[] data = encoding.GetBytes(postData);

        var myRequest =
            (HttpWebRequest)WebRequest.Create("https://api.instagram.com/v1/subscriptions/");
        myRequest.Method = "POST";
        myRequest.ContentType = "application/x-www-form-urlencoded";
        myRequest.ContentLength = data.Length;
        using (var newStream = myRequest.GetRequestStream())
        {
            newStream.Write(data, 0, data.Length);
        }

        InstagramSubscriptionResponseViewModel instaResponse = null;
        using (var response = myRequest.GetResponse())
        {
            var responseStream = response.GetResponseStream();
            if (responseStream != null)
            {
                using (var responseReader = new StreamReader(responseStream))
                {
                    var result = responseReader.ReadToEnd();

                    // do whatever you want

                }

            }
        }

1 ответ

Решение

Это из-за нгрок. Я не знаю почему, но у меня возникла та же проблема, и после загрузки файлов на веб-сервер все заработало.

Другие вопросы по тегам