2015-05-22 25 views
1

所以我正在使用Twitter API。我的代碼如下所示:c#mvc 5爲什麼我的會話爲空?

 public ActionResult AuthorizeTwitter() 
    {    
     Response.Redirect(GetRequestToken()); 
     return View(); 
    } 

    private string GetRequestToken() 
    { 
     var twitter = new Twitter(consumer, consumerSecret, oauth_token, oauth_token_secret); 
     twitter.BaseURI = requestUrl; 
     var result = twitter.GetRequest("http://localhost:60707/Twitter/GetAccessToken"); 

     string[] resultArray = result.Split('&'); 
     twitter.RequestToken = resultArray[0].Split('=')[1]; 
     twitter.RequestTokenSecret = resultArray[1].Split('=')[1]; 

     var requestToken = Session["oauth_token"] = resultArray[0].Split('=')[1];    
     Session["oauth_secret"] = resultArray[1].Split('=')[1]; 

     string redirect = authorizeUrl + requestToken; 
     return (redirect); 
    } 

    public ActionResult GetAccessToken() 
    { 

     string verifier = Request.Params["oauth_verifier"]; 
     string token = Request.Params["oauth_token"]; 
     string secret = Session["oauth_secret"].ToString(); 
     ..... 
    } 

我在GetRequestToken方法設置Session["oauth_secret"],當我調試我看到它的罰款。

但是,當我回到GetAccessToken時,該值不再存在,並且會話爲null。爲什麼是這樣?

此外,一個相關的問題,我應該保持這些值在會話?

這樣做有沒有問題,有沒有更好的方法來做到這一點?

+0

嘗試'HttpContext.Current.Session' –

+0

[不要使用HttpContext.Current.Session](http://stackoverflow.com/questions/9119345/mvc-not-supposed-to-use-httpcontext-current-anymore )。 –

回答

0

您是否檢查過您的twitter的accessToken過期了? 我認爲它有一個有限的時間,之後,你必須再次得到它。 想想自動獲取accessToken的時間量。

+0

我正在授權用戶並試圖獲取訪問令牌,所以這不會發生。 – ygetarts