2017-06-02 222 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(); 
    }