检索instagram访问令牌页面加载

本文关键字:加载 访问令牌 instagram 检索 | 更新日期: 2023-09-27 18:19:02

我想在我的网站上显示我的用户提要,我打算做的是每次用户访问页面时验证我自己的用户帐户,并以这种方式通过用户必须登录他的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,因为在最终url之前有一些重定向。

检索instagram访问令牌页面加载

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

不幸的是,Instasharp目前提供的文档有一些错误。例如,当这样的类不存在时,文档说OAuthInfo。这里是一些为我工作的代码。注意,您似乎根本不需要传递用户对象(不确定为什么需要这样做)。还要注意,经过身份验证和未经过身份验证的方法允许传递不同的参数,count是最重要的一个。我注意到,无论您传递的计数是多少,都会返回任意数量的结果,例如,对于相同的搜索项,authenticated为33,authenticated为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();
    }

.