是否可以作为应用程序进行身份validation而不是使用Facebook C#SDK进行身份validation?

Facebook的OAuth实现允许您作为应用程序(而不是用户)进行身份validation。 是否有可能通过Facebook C#SDK实现这一目标?

丰富

看起来Facebook C#SDK无法帮助您获取用户或应用程序的访问令牌。 基于对Facebook C#SDK的评论:

此SDK不包含从用户获取令牌的方法,因为最佳方法取决于使用它的应用程序类型。

你几乎是自己的。

根据@ jfar的回答,它看起来并不像SDK本身支持应用程序身份validation。 我的解决方案是自己获取访问令牌,然后将其应用于SDK。

下面是我用于检索访问令牌的粗略的控制台应用程序。

static void Main(string[] args) { var webRequest = (HttpWebRequest)HttpWebRequest.Create("https://graph.facebook.com/oauth/access_token"); webRequest.Method = "POST"; webRequest.ContentType = "application/x-www-form-urlencoded"; var requestString = "grant_type=client_credentials&client_id=***client_secret=***"; byte[] bytedata = Encoding.UTF8.GetBytes(requestString); webRequest.ContentLength = bytedata.Length; var requestStream = webRequest.GetRequestStream(); requestStream.Write(bytedata, 0, bytedata.Length); requestStream.Close(); var response = webRequest.GetResponse(); var responseStream = new StreamReader(response.GetResponseStream()); var responseString = responseStream.ReadToEnd(); responseStream.Close(); response.Close(); if (!String.IsNullOrWhiteSpace(responseString)) { var accessToken = responseString.Replace("access_token=", ""); var fbApp = new FacebookApp(accessToken); long id = ****; dynamic results = fbApp.Query("select name, email, website from user where uid=" + id.ToString()); dynamic user = results[0]; Console.Write(String.Concat(user.name, " ", user.email, " ", user.website)); } else { } Console.ReadLine(); } 

如您所见,我已使用HttpWebRequest启动了OAuth身份validation。 响应返回应用程序访问令牌,然后将其直接传递到其中一个FacbeookApp构造函数中,使我可以访问Facebook C#SDK。

丰富