2017-06-02 224 views
1

我正在開發一個應用程序,使用instagram api將訂閱源帶到我的網站。當我嘗試使用的Instagram提供的代碼訪問的access_token它給我`400錯誤請求錯誤。我將非常感激,如果有人可以幫助我解決這個問題。非常感謝Instagram Api(https://api.instagram.com/oauth/access_token「,」post「,parameters)返回400錯誤請求

string code=""; 

public ActionResult Index() 
    { 
     if (!String.IsNullOrEmpty(Request["code"])) 
     { 
      code = Request["code"].ToString(); 
      GetDataInstagramToken(); 

     } 


     return View(); 

     } 


public ActionResult Instagram() 
{ 
    var client_id = ConfigurationManager.AppSettings["instagram.clientid"].ToString(); 
    var redirect_uri = ConfigurationManager.AppSettings["instagram.redirecturi"].ToString(); 
    string url = "https://api.instagram.com/oauth/authorize/?client_id=" + client_id + "&redirect_uri=" + redirect_uri + "&response_type=code"; 
    Response.Redirect(url); 

    return View(); 

} 

public void GetDataInstagramToken() 

{ 
    var json = ""; 
    var page = HttpContext.CurrentHandler as Page; 
    try 
    { 
     NameValueCollection parameters = new NameValueCollection(); 
     parameters.Add("client_id", ConfigurationManager.AppSettings["instagram.clientid"].ToString()); 
     parameters.Add("client_secret", ConfigurationManager.AppSettings["instagram.clientsecret"].ToString()); 
     parameters.Add("grant_type", "authorization_code"); 
     parameters.Add("redirect_uri", ConfigurationManager.AppSettings["instagram.redirecturi"].ToString()); 
     parameters.Add("code", code); 

     WebClient client = new WebClient(); 
     var result = client.UploadValues("https://api.instagram.com/oauth/access_token", "post", parameters); 
     var response = System.Text.Encoding.Default.GetString(result); 

     // deserializing nested JSON string to object 
     var jsResult = (JObject)JsonConvert.DeserializeObject(response); 
     string accessToken = (string)jsResult["access_token"]; 
     int id = (int)jsResult["user"]["id"]; 

     //This code register id and access token to get on client side 
     page.ClientScript.RegisterStartupScript(this.GetType(), "GetToken", "<script> var instagramaccessid=\"" + @"" + id + "" + "\"; var instagramaccesstoken=\"" + @"" + accessToken + "" + "\";</script>"); 




    } 
    catch (Exception ex) 
    { 
     throw; 

    } 
} 

我得到異常at var result = client.UploadValues("https://api.instagram.com/oauth/access_token", "post", parameters);

+0

請檢查我的回答能幫助你 –

回答

0

在這一行

client.UploadValues("https://api.instagram.com/oauth/access_token", "post", parameters); 

您不會發送任何值到Instagram。如果你檢查你的參數,你可以看到你的鑰匙,但你不能看到任何值。

試試這個:

public async void GetTokenFromCode() 
    { 
     var values = new Dictionary<string, string> { 
      { "client_id","Your ChatId" }, 
      { "client_secret", "Your Client Secret" }, 
      { "grant_type", "authorization_code" }, 
      { "redirect_uri", "Your Redirect url"}, 
      { "code", "code" } }; 
     var content = new FormUrlEncodedContent(values); 
     var response = await client.PostAsync("https://api.instagram.com/oauth/access_token", content); 
     var responseString = await response.Content.ReadAsStringAsync(); 
    }