OAuth 2.0 In .NET With Instagram API

asp.net, asp.net-mvc, c#, oauth

Solution

I got the answer from the above mentioned SO post about adding POST parameters to an HttpWebRequest. Here are the details of my implementation.

NameValueCollection parameters = new NameValueCollection();
parameters.Add("client_id", "3498wjfoi2892jf0j2ij02fjakjf2");
parameters.Add("client_secret", "392621gfdlfj2k2hf7g2lfhj2g");
parameters.Add("grant_type", "authorization_code");
parameters.Add("redirect_uri", "http://localhost:34962/Home/Auth");
parameters.Add("code", code);

WebClient client = new WebClient();
var result = client.UploadValues("https://api.instagram.com/oauth/access_token", parameters);

var response = System.Text.Encoding.Default.GetString(result);

return View("Index", (object)response);

Problem

I am working on consuming the Instagram API and I am stuck at step 2 of their OAuth. I have a code from their redirect back to me, but then they want me to do a post with parameters like below... ``` curl \ -F 'client_id=CLIENT-ID' \ -F 'client_secret=CLIENT-SECRET' \ -F 'grant_type=authorization_code' \ -F 'redirect_uri=YOUR-REDIRECT-URI' \ -F 'code=CODE' \ https://api.instagram.com/oauth/access_token ``` I am implementing this as an ASP.NET MVC 3 solution. I tried to implement the post like so... ``` WebRequest request = HttpWebRequest.Create("https://api.instagram.com/oauth/access_token"); request.Method = "POST"; request.Headers.Add("client_id", "sdlf0982jiejfopijfp92jjiwoijf90"); request.Headers.Add("client_secret", "39993939393939393939393939393"); request.Headers.Add("grant_type", "authorization_code"); request.Headers.Add("redirect_uri", "http://localhost:34962/Home/Auth"); request.Headers.Add("code", 111111); var response = request.GetResponse(); return View(); ``` ` This gives me a 400 error saying that "client_id is required". I have included the client_id, but I'm clearly not implementing this correctly. What is the "best practice" way to perform the second leg of the OAuth?

Original source

Related problems