我正在使用Facebook C# SDK,並試圖弄清楚它是如何工作的。實際上我用一個AJAX Web方法查找基於經過驗證的用戶ID,它看起來像這樣的Facebook帳戶細節:Facebook C#SDK是否依賴於服務器上的cookie?
if (response.status === "connected")
{
KitchenPC.LogonFB(response.authResponse.userID, checkResult, facebookError);
}
在服務器端,LogonFB Web方法不一樣的東西:
Client = new FacebookClient(applicationId, applicationSecret);
var result = Client.Get(path) as IDictionary<string, object>;
UserId = Int64.Parse((String)result["id"]);
Name = result["name"] as String;
FirstName = result["first_name"] as String;
LastName = result["last_name"] as String;
Location = result.ContainsKey("location") ? result["location"] as String : "";
Gender = result.ContainsKey("gender") ? result["gender"] as String : "";
Email = result["email"] as String;
其中path
是從客戶端傳入的用戶標識。
我的問題:
我從ASP.NET Web服務切換到WCF,和WCF不支持cookie。事實上,在WCF管道中,HttpContext.Current
將爲空。我的印象是,Facebook C#SDK 取決於上的fbm_
和fmsr_
cookie傳入請求中,這將用於驗證與Facebook服務器的會話。不過,令我驚訝的是,.Get()
調用仍然有效,並返回用戶信息。我還挖掘了SDK源代碼,並在其中找到了對HttpContext.Current
的引用。
Facebook C#SDK是否完全獨立於Cookie工作?這是否意味着我需要的只是用戶的Facebook ID,並且只要他們以前批准了我的應用ID,我就可以獲取有關其帳戶的信息?
我只是想確保我沒有做錯任何事,而且我不會在生產中遇到麻煩。
那麼SDK是否需要客戶端cookie工作? –
沒有。它基於Client Framework,因此不存在System.Web.dll引用。它具有解析已簽名請求的功能,但即使如此,您仍然需要手動通過signed_request。 fb.ParseSignedRequest(Request.Params [「signed_request」],「appSecret」)。它不支持解析cookie。 – prabir
好的,太好了。這回答了我的問題! –