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