Instagram Api(https://api.instagram.com/oauth/access_token“,”post“,参数)返回400 Bad Request

时间:2017-06-02 08:05:28

标签: c# asp.net-mvc instagram-api

我正在使用instagram api开发一个应用来为我的网站提供Feed。我有以下代码,但当我尝试使用Instagram提供的代码访问access_token时,它给了我'400 Bad request error。如果有人能帮助我克服这个问题,我将非常感激。非常感谢

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;

    }
}

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

1 个答案:

答案 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();
    }