Я аутентифицируюсь в 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 содержит указанную выше строку ошибки, в которой говорится, что мой код авторизации неверен.
Любые идеи?
С уважением,
хороший бар