为什么相同的Access Token适用于Media但不适用于Feed?

时间:2014-12-20 11:13:17

标签: c# instagram instasharp

我使用InstaSharp从我的帐户中获取所有媒体。此代码可以正常运行:

 var user = new InstaSharp.Endpoints.Media.Authenticated(config, authInfo);
 var media = user.Popular();

现在,如果我对Users执行相同的操作:

var user = new InstaSharp.Endpoints.Users.Authenticated(config, authInfo);
var feed = user.Feed("self");

返回:

  

OAuthParameterException:提供的access_token无效。

为什么相同的访问令牌在一个地方工作但在另一个地方不起作用?


注意:我在获取访问令牌时传递了所有范围(basiccommentslikesrelationships)我也尝试过默认(basic)但它也没有用。

注2:由于我在ConsoleApplication中尝试此操作,我获取访问令牌的方式是,生成链接,复制/粘贴到浏览器,确认授权并从URL获取。我不确定它有什么不同,但值得注意......

1 个答案:

答案 0 :(得分:2)

我找出问题所在。似乎生成的链接正在请求code,而不是access_token。这就是为什么它无效。

我意识到我使用旧版InstaSharp即使我从它的网站上下载了它。首先,我通过NuGet安装了latest version。然后,我得到访问令牌和这样的媒体:

var config = new InstagramConfig(clientId, clientSecret);
var AuthLink = OAuth.AuthLink(config.OAuthUri + "/authorize", 
                              config.ClientId, 
                              config.RedirectUri,
                              scopes, 
                              OAuth.ResponseType.Code);

var authInfo = new OAuth(config);

// get the code from the link then pass it to RequestToken
var response = await authInfo.RequestToken(code);
var user = new Users(config, response);
var media = await user.RecentSelf(count: 30);

一切都很顺利。