0

自分の Web サイトにユーザー フィードを表示したいのですが、ユーザーがページにアクセスするたびに自分のユーザー アカウントを認証し、その方法でユーザーが自分の 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 の前のリダイレクトの間にいくつか。

どんな助けでも大歓迎です..

4

2 に答える 2

1

Instasharpライブラリを使用することをお勧めします。InstaSharp は、Instagram API をラップし、Instagram データを使用してアプリケーションを簡単に作成できるようにする C# ライブラリです。ユーザーのアクセストークンを取得するための非常に簡単な方法があります。その 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 に答える