0
我目前正在尝试使用instagram订阅功能为我的MVC网站的用户创建'与Instagram同步'机制。现在我已经正确设置了所有设置,就像它们在其api页面上描述的那样:Instagram订阅408请求超时2秒后
- 我指示用户访问其授权页面,以成功获取授权。
- 我为回调方法创建了一个GET和POST方法。 GET测试它是否与所描述的参数一致(hub.mode = subscribe & hub.challenge = test & hub.verify_token = mytoken),当成功时返回挑战,并使用ngrok将其公开)
- 然后我试图订阅用户,其中在2秒后立即崩溃408请求超时。回调网址的GET请求从不发生。
我也尝试稍微改变我发送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所做的回调。有一些hickups一路上,但现在它的作品。我不得不为通话重写代码,因为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。它指出我在正确的方向:)我用我的最终解决方案代码更新了我的问题 – Hypi