Facebook — код обмена для access_token (C#/Windows Phone/БЕЗ SDK)

Я аутентифицируюсь в facebook через oauth 2.0, используя С# на Windows Phone. Я использую только сервисные вызовы REST. Не использовать Facebook SDK вообще. В настоящее время я могу запустить браузер на телефоне, попросить пользователя войти в систему и утвердить область действия приложения, а также получить мой код авторизации.

Однако я не могу в жизни обменять свой код авторизации на токен доступа.

В моем приложении Facebook в разделе «Настройки» -> «Дополнительно» включены следующие переключатели:

  • Нативное или десктопное приложение? [Да]
  • Ваш App Secret встроен? [Нет]
  • Логин клиента OAuth? [Да]
  • Вход через встроенный браузер OAuth? [Да]

Я должен отметить, что моя модель аутентифицирует пользователя и получает код авторизации по телефону, а затем я передаю код авторизации в защищенную службу, где я обмениваю его на access_token. Однако у меня были проблемы, поэтому я временно переместил этот вызов сервера в свое телефонное приложение для устранения неполадок, но получаю ту же ошибку.

Ошибка, которую я получаю:

{"error":{"message":"Неверный формат кода подтверждения.","type":"OAuthException","code":100}}

Я пробовал несколько комбинаций, включая перенос кода авторизации с помощью HTTPUtility.UrlEncode().

Вот пример моего кода (фактические значения заменены).

        string FacebookClientID = "123456789123456789";
        string FacebookRedirectURI = "https://www.facebook.com/connect/login_success.html";
        string FacebookClientSecret = "d156df15dfds1f561fds5f1ds6f1";
        string FacebookUrl = "https://graph.facebook.com/oauth/access_token";

        HttpRequestMessage tokenRequest = new HttpRequestMessage(HttpMethod.Get, new Uri(FacebookUrl + "?client_id=" + FacebookClientID + "&redirect_uri=" + HttpUtility.UrlEncode(FacebookRedirectURI) + "&client_secret=" + FacebookClientSecret + "&code=" + HttpUtility.UrlEncode(FacebookAuthorizationCode)));

        HttpResponseMessage tokenResponse = await hc.SendAsync(tokenRequest);

        var json = tokenResponse.Content.ReadAsStringAsync().Result;

json содержит указанную выше строку ошибки, в которой говорится, что мой код авторизации неверен.

Любые идеи?

С уважением,

хороший бар


person goodbar    schedule 09.04.2014    source источник
comment
Да... неважно, я устанавливал код авторизации .ToLower(). Удалил это и теперь работает как шарм...   -  person goodbar    schedule 09.04.2014
comment
Для справки, я могу получить access_token со ВСЕМИ переключателями в настройках Facebook --> расширенные настройки отключены.   -  person goodbar    schedule 09.04.2014
comment
Вы должны опубликовать это как ответ, если решено, и принять его   -  person Sahil Mittal    schedule 09.04.2014
comment
подойдет, сайт заставил меня ждать 8 часов, прежде чем я смог ответить на свой вопрос.   -  person goodbar    schedule 10.04.2014


Ответы (1)


Да... неважно, я устанавливал код авторизации .ToLower() перед тем, как обменять его на access_token. Удалил это и теперь работает как шарм...

Для справки, я могу получить access_token со ВСЕМИ переключателями в настройках Facebook -> расширенный режим отключен

person goodbar    schedule 10.04.2014