Я написал приложение WinRT на основе XAML, которое подключается к Foursquare через вызов WebAuthenticationBroker.AuthenticateAsync. Вот код авторизации:
public async Task<string> FsqAuthenticate()
{
var fsqAuthUrl = string.Format(
"https://foursquare.com/oauth2/authenticate?client_id={0}&response_type=code&redirect_uri={1}&display=webpopup",
ClientId, RedirectUri);
var requestUri = new Uri(fsqAuthUrl, UriKind.RelativeOrAbsolute);
var redirUri = new Uri(RedirectUri, UriKind.RelativeOrAbsolute);
string authCode = string.Empty;
string authToken = string.Empty;
try
{
ResponseErrorMsg = string.Empty;
WebAuthenticationResult WebAuthenticationResult = await WebAuthenticationBroker.AuthenticateAsync(
WebAuthenticationOptions.None,
requestUri, redirUri);
if (WebAuthenticationResult.ResponseStatus == WebAuthenticationStatus.Success)
{
Это прекрасно работает, если пользователь выбирает аутентификацию напрямую через Foursquare или регистрацию через Foursquare. Однако страница Foursquare OAuth дает пользователю возможность войти/зарегистрироваться через Facebook. Если выбрано, начальный экран входа в Facebook отображается правильно; пользователь может ввести имя пользователя/пароль и нажать кнопку «Войти»; затем окно становится пустым. Похоже, управление передается всплывающему окну Facebook с запросом на предоставление разрешений. Однако WebAuthenticationBroker этого не отображает. Во всех смыслах и целях WebAuthenticationBroker завис.
Существует ли обходной путь для такого поведения?