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

是否可以使用Facebook C#SDK作为应用程序而不是用户进行身份验证?,c#,facebook,authentication,oauth,facebook-c#-sdk,C#,Facebook,Authentication,Oauth,Facebook C# Sdk,Facebook的OAuth实现允许您作为应用程序(而不是用户)进行身份验证。用Facebook的C#SDK能做到这一点吗 Rich看起来Facebook C#SDK无法帮助您以用户或应用程序的身份获取访问令牌。基于Facebook C#SDK上的这一评论: 此SDK不包括 从用户处获取令牌,如 最好的方法取决于什么类型 大多数应用程序都在使用它 您的身份验证几乎完全由您自己完成。根据@jfar的回答,SDK似乎不支持应用程序身份验证。我的解决方案是自己获取访问令牌,然后将其应用于SDK 下面是

Facebook的OAuth实现允许您作为应用程序(而不是用户)进行身份验证。用Facebook的C#SDK能做到这一点吗

Rich

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

此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的应用程序


里奇

+1谢谢@jfar。我觉得我在我的第一张脸书上做了很多假设,结果有点像雷区。我目前的解决方案是自己获取访问令牌,然后将其传递到SDK中。