Не удалось получить токен доступа в настольном приложении .NET - PullRequest
3 голосов
/ 27 мая 2011

Я пишу приложение .NET, которое работает на компьютере с Windows. Он не доступен через браузер. Проблема в том, что я не могу подтвердить подлинность, как я должен. В настоящее время я пишу в C # .NET, более конкретно в C #.

  • В моей форме есть веб-браузер.
  • Пользователь входит в Facebook через этот элемент управления веб-браузера.
  • После входа в систему я запускаю процедуру аутентификации.
  • Затем я получаю код.

Вот где это идет не так. С помощью этого кода я хочу получить токен доступа. Сгенерированный URL-адрес запроса выглядит следующим образом: https://graph.facebook.com/oauth/access_token?client_id=____MY_APP_ID______&redirect_uri=http://localhost/&client_secret=_____MY_APP_SECRET_____&code=____MY_RETREIVED_CODE_____ и выполняется с помощью приведенного ниже кода.

Обратите внимание, что мой URL перенаправления - http://localhost. Это должно быть хорошо, верно?

Кроме того, в моих настройках приложения есть следующая информация.

URL сайта: http://localhost/ Домен сайта: localhost

private String ExchangeCodeForToken(String code, Uri redirectUrl)
{
    var TokenEndpoint = new Uri("https://graph.facebook.com/oauth/access_token");
    var url = TokenEndpoint + "?" +
                      "client_id=" + _AppID + "&" +
                      "redirect_uri=" + redirectUrl + "&" +
                      "client_secret=" + _AppSecret + "&" +
                      "code=" + code;
    var request = WebRequest.CreateDefault(new Uri(url));
    using (var response = request.GetResponse())
    {
        using (var responseStream = response.GetResponseStream())
        {
            using (var responseReader = new StreamReader(responseStream))
            {
                var responseText = responseReader.ReadToEnd();
                var token = responseText.Replace("access_token=", "");
                return token;
            }
        }
     }
}

Когда я выполняю это, я получаю эту ошибку:

ошибка http://www.imageupload.org/getfile.php?id=50131&a=447f6fcc0ebd4d3f8e8a59a3a6e36ac3&t=4de0841c&o=0889D68FDC35508BA2C6F2689FCBAB7C30A8670CC9647EE598701D8BEC13ED278F0989D393&n=autherror.png&i=1

Webexception не был обработан кодом пользователя Удаленный сервер возвратил ошибку: (400) неверный запрос.

Здесь я думаю, что могу ошибаться:

  • Настройки моего приложения верны?
  • Должен ли мой URL-адрес перенаправления быть http://localhost, даже если там на самом деле нет службы, прослушивающей?

Самое главное:

  • как мне избавиться от этой ошибки и получить токен доступа?

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 28 мая 2011

Вы получаете эту ошибку, потому что вы не должны вызывать этот URL из приложения Desktop: насколько я знаю, вы не можете использовать конечную точку токена для аутентификации приложения Desktop.Кроме того, вы можете получить токен доступа напрямую (не нужно сначала запрашивать код).Вот что вам нужно сделать.

Загрузите следующий URL во встроенный веб-браузер:

https://www.facebook.com/dialog/oauth?
  client_id=YOUR_APP_ID&
  redirect_uri=https://www.facebook.com/connect/login_success.html

Пользователю будет предложено войти в систему и он будет перенаправлен на этот URL стокен доступа в URL:

https://www.facebook.com/connect/login_success.html#access_token=...

Таким образом, вы должны обнаружить перенаправление и получить токен доступа из URL.

0 голосов
/ 29 мая 2011

Спасибо, quinten!

Однако мне удалось решить собственную проблему с помощью C # Facebook SDK.Этот набор для разработки программного обеспечения очень помог!

В него включено много примеров (включая авторизацию)

Каждый, кто программирует в .NET с Facebook, должен это проверить!Кодирование для Facebook теперь намного проще.

http://facebooksdk.codeplex.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...