2013-06-19 35 views
0

我想在我的網站上顯示我的用戶訂閱源,我打算做的是在用戶每次訪問該頁面時驗證自己的用戶帳戶,並以此方式購買用戶擁有的登錄到他的Instagram帳戶。在頁面加載時檢索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(); 

如果我粘貼網址我的瀏覽器我得到了一個重定向到http://mysite.com/#access_token=xxxxxxxxxxxxxx,一切似乎都很好,但是當我嘗試執行上面的代碼時,我無法檢索到正確的uri,因爲有些重定向之間的最終url。

任何幫助將大大appriciated ..

+0

你得到這個代碼的工作?現在在我的代碼中發現完全相同的問題,找不到解決方案。 – Yosoyke

回答

1

我建議你使用Instasharp庫。 InstaSharp是一個C#庫,它封裝了Instagram API,並使用Instagram數據輕鬆編寫應用程序。它有一個非常簡單的方法來獲取用戶的訪問令牌。檢查它的API。

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(); 
    } 

..