2 秒后 Instagram 订阅 408 请求超时

Instagram Subscription 408 Request Timeout after 2 seconds

我目前正在尝试使用 Instagram 订阅功能为我的 MVC 网站的用户创建一个 'sync with instagram' 机制。现在我已经正确设置了所有内容,就像他们在 api 页面上描述的那样:

我还尝试稍微更改我在那个 post 请求中发送 instagram 的内容,如果我更改一件事,我会收到一个错误的请求而不是超时。 我还尝试创建自己的网络客户端来增加网络请求超时,但没有成功。

有没有人知道我做错了什么或者从哪里可以获得更多关于真正失败的信息? 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 Functions 以便能够快速测试 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

                }

            }
        }

是因为ngrok。我不知道为什么,但我遇到了同样的问题,将文件上传到网络服务器后,它起作用了。