Asp.net Facebook C#SDK是否依赖于服务器上的cookie?
我正在使用,并试图弄清楚它到底是如何工作的。实际上,我使用AJAX web方法根据经过身份验证的用户ID查找Facebook帐户详细信息,如下所示:Asp.net Facebook C#SDK是否依赖于服务器上的cookie?,asp.net,facebook,facebook-c#-sdk,Asp.net,Facebook,Facebook C# Sdk,我正在使用,并试图弄清楚它到底是如何工作的。实际上,我使用AJAX web方法根据经过身份验证的用户ID查找Facebook帐户详细信息,如下所示: if (response.status === "connected") { KitchenPC.LogonFB(response.authResponse.userID, checkResult, facebookError); } 在服务器端,LogonFB web方法执行以下操作: Client = new FacebookClien
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;
Client=newfacebookclient(applicationId,applicationSecret);
var result=Client.Get(path)作为IDictionary;
UserId=Int64.Parse((字符串)结果[“id”]);
名称=结果[“名称”]作为字符串;
FirstName=结果[“first_name”]作为字符串;
LastName=result[“last_name”]作为字符串;
位置=结果。是否包含“位置”?结果[“位置”]为字符串:“”;
性别=结果。ContainsKey(“性别”)?结果[“性别”]为字符串:“”;
Email=结果[“Email”]作为字符串;
其中path
是从客户端传入的用户ID
我的问题:
我正在从ASP.NET Web服务切换到WCF,而WCF不支持cookies。事实上,HttpContext.Current
在WCF管道中将为空。我的印象是Facebook C#SDK依赖于请求中传递的fbm_
和fmsr_
cookies,这些cookies将用于验证与Facebook服务器的会话。然而,令我惊讶的是,.Get()
调用仍然有效,并且返回了用户信息。我还翻遍了SDK源代码,在其中没有找到对HttpContext.Current
的引用
Facebook C#SDK是否完全独立于cookie工作?这是否意味着我只需要用户的Facebook ID,只要他们之前批准了我的应用ID,我就可以获取他们帐户的信息
我只是想确保我没有做错任何事情,也不会在生产中遇到麻烦。当您使用appId和appSecret传递构造函数时,它将使用
string.Concat(appId,“|”,appSecret)自动将访问令牌设置为app访问令牌。
。该构造函数已在较新版本的sdk中删除
如果不需要访问令牌,请将其设置为null
Client = new FacebookClient(applicationId, applicationSecret);
Client.AccessToken = null;
var result = Client.Get(path) as IDictionary<string, object>;
Client=newfacebookclient(applicationId,applicationSecret);
Client.AccessToken=null;
var result=Client.Get(path)作为IDictionary;
否。它基于客户端框架,因此没有System.Web.dll引用。它确实能够解析已签名的请求,但即使如此,您也需要手动传递已签名的请求。fb.ParseSignedRequest(Request.Params[“signed_Request”],“appSecret”)。它不支持分析cookies。好的,很好。这回答了我的问题!