2012-06-13 24 views
1

我是ASP.net編程的新手。這是參考Facebook C#SDK,我已經設法設置了在此SDK上進行身份驗證所需的所有步驟。在Facebook C#SDK示例中未檢索到會話

(參考:http://csharpsdk.org/docs/web/getting-started#5)不過,我一直從下面的代碼得到一個空

var accessToken = Session["AccessToken"].ToString(); //This line returns null and crashes 
var client = new FacebookClient(accessToken); 
dynamic result = client.Get("me", new { fields = "name,id" }); 
string name = result.name; 
string id = result.id; 

就像在本例中,我已經建立了一個通用的處理程序來建立會話變量存儲在HttpContext.Session對象中。

我甚至試圖修改出錯行直接訪問的HttpContext和檢索訪問令牌:

var accessToken = HttpContext.Current.Session["AccessToken"].ToString(); 

但這產生了相同的結果。

我是否遺漏了webconfig中的某些內容,或者有其他方式可以在從處理程序切換到登錄頁面時存儲訪問令牌?

+0

在你試圖從Session中設置'AccessToken'值之前,你有沒有設置? –

+0

是的,我把它設置在FacebookLogin Generic處理程序中,就像http://csharpsdk.org/docs/web/getting-started#5 – SalGad

回答

0

如果它返回null,那麼我會假設Session值沒有被設置 - 你有沒有調試過,以確保設置會話的代碼被擊中?

看看鏈接的文章 - 它使用HttpHandler來做這件事,但沒有提到任何關於在Web.Config中註冊它的事情 - 你有這樣做嗎?如果在這裏看不到http://msdn.microsoft.com/en-us/library/46c5ddfy.aspx

+0

中的示例一樣。謝謝!我會試試這個,讓你知道它是否有效。我發佈了我在Azure中試用的網站。有沒有辦法設置跟蹤或日誌,以便我可以查看信息是否存儲在處理程序中? – SalGad

+0

本地調試會比較容易,但是您可以將trace屬性添加到您的頁面,這會爲您提供會話變量等的跟蹤。請參閱http://msdn.microsoft.com/en-us/library/94c55d08.aspx –

+1

您!將更新後,如果我得到這個工作 – SalGad

1

請確保在您的Facebook開發人員設置中,您沒有爲您的應用選擇查詢字符串作爲身份驗證令牌參數!

這是默認模式,這不會工作,除非你做到以下幾點:

http://developer.facebook.com

打開您的應用頁面。

然後轉到設置 - >身份驗證對話框 - >身份驗證令牌參數並選擇URI片段。

100%確定這是你的問題。它沒有包含在我發現的任何文獻中,而且這是一個該死的恥辱。