Facebook的OAuth實現允許您以應用程序(而不是用戶身份)進行身份驗證。 Facebook C#SDK可以實現這一點嗎?是否可以使用Facebook C#SDK作爲應用程序進行身份驗證而不是用戶身份驗證?
豐富
Facebook的OAuth實現允許您以應用程序(而不是用戶身份)進行身份驗證。 Facebook C#SDK可以實現這一點嗎?是否可以使用Facebook C#SDK作爲應用程序進行身份驗證而不是用戶身份驗證?
豐富
根據@ jfar的回答,它看起來好像SDK本身支持應用程序認證。我的解決方案是自己獲取訪問令牌,然後將其應用於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身份驗證。響應返回應用程序訪問令牌,然後直接將其傳遞給FacbeookApp
構造函數之一,從而使我可以訪問Facebook C#SDK的應用程序。
富
看起來像Facebook的C#SDK不幫你獲得訪問令牌的用戶或應用程序。基於Facebook上的C#SDK此評論:
此SDK不包括 的方法獲得來自用戶的令牌,爲 最好的方法將取決於什麼類型的應用 在使用它。
你自己的很多。
+1謝謝@jfar。我覺得我喜歡在第一個Facebook上做了很多假設,但結果卻是一個雷區。我目前的解決方案是自己獲取訪問令牌,然後將其傳遞到SDK中。 – kim3er 2011-01-13 11:08:12