(Instagram API)麻烦达到标记端点

时间:2015-11-30 12:58:58

标签: c# asp.net get dotnet-httpclient instagram-api

我正在尝试收集包含特定主题标签的最近帖子列表。 API Documentation表示我应该使用以下GET调用:

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

当我加载要显示此信息的页面时,执行以下操作:

    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.
    }

作为参考,tagToLookFor是在类顶部定义的常量字符串(例如 foo ),我将从OAuth进程返回的访问令牌存储在Session对象中,其键为'instagramaccesstoken'。

在调试时,我检查确保URI正确形成,并且它确实包含标记名称和刚刚创建的access_token。使用具有相同URI的Apigee(另存为access_token)将返回我期望的有效结果。但是,尝试使用我的webstie上的URI进行GET返回:

{
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
    }
}

我正在试图确定两者之间的差异;我能想到的唯一一件事就是当我在页面之间切换时,access_token会以某种方式失效。我在Login / Auth页面上做的最后一件事是使用Session.Add存储access_token,然后调用Server.Transfer移动到我正在调用它的页面。

有关问题的任何想法?感谢。

2 个答案:

答案 0 :(得分:0)

在发出请求时将令牌附加到标题。

Client.DefaultRequestHeaders.Add("access_token", "Bearer " + token);

答案 1 :(得分:0)

问题最终成为关于沙箱模式的问题。我在切换后注册了一个应用程序,而且我是沙箱中唯一的用户。因此,查找我的帖子/信息没有问题,但沙盒模式就好像Sandbox用户是Instagram上的唯一用户一样,所以很自然地找不到其他用户。

事实证明我的组织中存在一个现有的注册应用程序(在切换日期之前制作)没有任何此类限制,所以我一直在使用该AppID /机密进行测试。

tl;博士:如果您是应用沙箱中唯一的用户,请努力让用户进入您的沙箱。有关详细信息,请参阅their article