我目前正在尝试使用Instagram订阅功能为我的MVC网站用户创建“与Instagram同步”机制。现在我已经按照他们在api页面上描述的那样正确设置了所有内容:
我还尝试稍微更改我在该帖子请求中发送Instagram的内容,如果我更改了一件事我收到了错误请求而不是超时。 我还尝试创建自己的webclient,以便在没有运气的情况下暂停Web请求超时。
有没有人知道我做错了什么,或者在哪里可以获得有关真正失败的更多信息? 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所做的回调。沿途有一些hickup,但现在它的工作原理。我不得不重写该调用的代码,因为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
}
}
}
答案 0 :(得分:2)
It is because of ngrok. I don't know why, but I had the same problem and after uploading the files on a web server, it worked.