Можно ли пройти аутентификацию как приложение, а не как пользователь с Facebook C # SDK? - PullRequest
1 голос
/ 13 января 2011

Реализация OAuth от Facebook позволяет вам проходить аутентификацию как приложение (а не как пользователь).Возможно ли достичь этого с помощью Facebook C # SDK?

Rich

Ответы [ 2 ]

1 голос
/ 13 января 2011

Согласно ответу @ 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();
    }

Как видите, яинициировали аутентификацию OAuth, используя HttpWebRequest.Ответ возвращает токен доступа к приложению, который затем передается прямо в один из конструкторов FacbeookApp, давая мне доступ приложения к Facebook C # SDK.

Rich

1 голос
/ 13 января 2011

Похоже, что Facebook C # SDK не поможет вам получить токен доступа в качестве пользователя или приложения. Основываясь на этом комментарии на Facebook C # SDK:

Этот SDK не включает метод получить токен от пользователя, как лучший метод будет зависеть от того, какой тип приложения использует его.

Ты в значительной степени сам по себе.

...