Search code examples
c#asp.netgetdotnet-httpclientinstagram-api

(Instagram API) Trouble Reaching Tag Endpoints


I'm trying to gather a list of recent posts that contain a certain hashtag. The API Documentation states that I should be using the following GET call:

https://api.instagram.com/v1/tags/{tag-name}/media/recent?access_token=ACCESS-TOKEN

When I load the page where I want this information displayed, I perform the following:

    using(HttpClient Client = new HttpClient())
    {
        var uri = "https://api.instagram.com/v1/tags/" + tagToLookFor + "/media/recent?access_token=" + Session["instagramaccesstoken"].ToString();
        var results = Client.GetAsync(uri).Result;
        // Result handling below here.
    }

For reference, tagToLookFor is a constant string defined at the top of the class (eg. foo), and I store the Access Token returned from the OAuth process in the Session object with a key of 'instagramaccesstoken'.

While debugging this, I checked to make sure the URI was being formed correctly, and it does contain both the tag name and the just-created access_token. Using Apigee with the same URI (Save for a different access_token) returns the valid results I would expect. However, attempting to GET using the URI on my webstie returns:

{
StatusCode: 400,
ReasonPhrase: 'BAD REQUEST',
Version: 1.1,
Content: System.Net.Http.StreamContent,
Headers:{
    X-Ratelimit-Remaining: 499
    Vary: Cookie
    Vary: Accept-Language
    X-Ratelimit-Limit: 500
    Pragma: no-cache
    Connection: keep-alive
    Cache-Control: no-store, must-revalidate, no-cache, private
    Date: Fri, 27 Nov 2015 21:39:56 GMT
    Set-Cookie: csrftoken=97cc443e4aaf11dbc44b6c1fb9113378; expires=Fri, 25-Nov-2016 21:39:56 GMT; Max-Age=31449600; Path=/
    Content-Length: 283
    Content-Language: en
    Content-Type: application/json; charset=utf-8
    Expires: Sat, 01 Jan 2000 00:00:00 GMT
    }
}

I'm trying to determine what the difference between the two could be; the only thing that I can think of is that access_token is somehow being invalidated when I switch between pages. The last thing I do on the Login/Auth page is store the access_token using Session.Add, then call Server.Transfer to move to the page that I'm calling this on.

Any Ideas on what the issue could be? Thanks.


Solution

  • The problem ended up being one regarding Sandbox Mode. I had registered an app after the switch, and I was the only user in my sandbox. As a result, it had no problem finding my posts/info, but Sandbox Mode acts as if the Sandbox users are the only users on Instagram, so naturally it would not find anything else.

    It turns out there was an existing registered application in my organization (made before the switch date) that does not have any such limitations, so I have been testing using that AppID/secret.

    tl;dr: If you're the only user in your app's sandbox, work on getting users into your sandbox. See their article about it for more info.