0

我想在我的网站上显示我的用户提要,我打算在每次用户访问该页面时验证我自己的用户帐户,并以这种方式购买用户必须登录到他的 Instagram 帐户。

我的问题是我很难通过 HttpWebRequest 检索 instagram 访问令牌。

请参阅以下非工作代码示例:

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.instagram.com/oauth/authorize?client_id=xxxxxxxxxxxxxxxxxxxxxx&redirect_uri=http://mywebsite.com&response_type=token");
    request.Method = "POST";
    request.AllowAutoRedirect = false;

    HttpWebResponse response = (HttpWebResponse)request.GetResponse();

    string redirectUrl = response.ResponseUri.ToString();

    HttpContext.Current.Response.Write(redirectUrl);
    HttpContext.Current.Response.End();

如果我将 url 粘贴到浏览器中,我会重定向到http://mysite.com/#access_token=xxxxxxxxxxxxxx,一切似乎都很好,但是当我尝试执行上面的代码时,我无法检索到正确的 uri,因为一些在最终网址之前的重定向之间。

任何帮助都会非常感激..

4

2 回答 2

1

我推荐你使用Instasharp库。InstaSharp 是一个 C# 库,它封装了 Instagram API,使使用 Instagram 数据编写应用程序变得容易。它有一个非常简单的方法来为用户获取访问令牌。检查它的 API。

于 2013-07-31T11:28:30.443 回答
0

不幸的是,目前提供的 Instasharp 文档有一些错误。即文档说 OAuthInfo,当这样的类不存在时。这是一些对我有用的代码。请注意,您似乎根本不需要传递用户对象(不知道为什么仍需要传递) 另请注意,经过身份验证和未经身份验证的方法允许您传递不同的参数,计数是最重要的参数。我注意到,无论您传递的计数如何,都会返回任意数量的结果,例如,33 表示已验证,13 表示同一搜索词已验证。InstagramResult 是我的对象包装类,Config 保存 InstagramAuthorisationModel,InstagramAuthorisationModel 保存在注册开发人员帐户时创建的静态密钥。

 public class InstagramService : IInstagramService
 ...
 public InstagramConfig Config
    {
        get{return new InstagramConfig("https://api.instagram.com/v1", "https://api.instagram.com/oauth", InstagramAuthorisationModel.ApplicationId, InstagramAuthorisationModel.Secret, InstagramAuthorisationModel.RedirectUri);}
    }
  private AuthInfo UserAuthInfo()
    {
        return new AuthInfo()
         {
             // User =new UserInfo(){},
             Access_Token = GetInstagramAccessToken()
         };
    }

   public string GetInstagramAccessToken()
    {
        return _socialMediaRepository.GetInstagramAccessToken(_userApiKey);
    }

   public List<InstagramResult> Search(string searchTag, int count)
    {
        var auth = UserAuthInfo();
        var tags = new InstaSharp.Endpoints.Tags.Authenticated(Config, auth); 
        var searchresult = tags.Recent(searchTag);
        return searchresult.Data.Select(media => new InstagramResult()
        {
            Media = media,
            image = media.Images.LowResolution.Url
        })
        .ToList();
    }

..

于 2014-07-16T09:33:21.543 回答