Windows 8 如果从foursquare发送到Facebook,WebAuthenticationBroker将挂起

Windows 8 如果从foursquare发送到Facebook,WebAuthenticationBroker将挂起,windows-8,windows-runtime,oauth-2.0,foursquare,facebook-oauth,Windows 8,Windows Runtime,Oauth 2.0,Foursquare,Facebook Oauth,我已经编写了一个基于XAML的WinRT应用程序,它通过WebAuthenticationBroker.AuthenticationAsync调用连接到foursquare。以下是身份验证代码: public async Task<string> FsqAuthenticate() { var fsqAuthUrl = string.Format( "https://foursquare.com/oauth2/authe

我已经编写了一个基于XAML的WinRT应用程序,它通过WebAuthenticationBroker.AuthenticationAsync调用连接到foursquare。以下是身份验证代码:

        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)
            {
公共异步任务FsqAuthenticate()
{
var fsqAuthUrl=string.Format(
"https://foursquare.com/oauth2/authenticate?client_id={0}&response\u type=code&redirect\u uri={1}&display=webpopup“,
ClientId,重定向URI);
var requestUri=新Uri(fsqAuthUrl,UriKind.RelativeOrAbsolute);
var redirUri=新Uri(重定向Uri,UriKind.RelativeOrAbsolute);
string authCode=string.Empty;
string authToken=string.Empty;
尝试
{
ResponseErrorMsg=string.Empty;
WebAuthenticationResult WebAuthenticationResult=等待WebAuthenticationBroker.AuthenticationAsync(
WebAuthenticationOptions。无,
请求uri,redirUri);
如果(WebAuthenticationResult.ResponseStatus==WebAuthenticationStatus.Success)
{
如果用户选择直接通过foursquare进行身份验证或通过foursquare进行注册,则此功能可以正常工作。但是,foursquare OAuth页面为用户提供了通过Facebook登录/注册的选项。如果选中此选项,初始Facebook登录屏幕将正确显示;用户可以输入用户名/密码并选择“登录”,但然后窗口变为空白。似乎控制权被传递到Facebook的弹出窗口,提示授予权限。但是,WebAuthenticationBroker没有显示此信息。出于所有目的,WebAuthenticationBroker被挂起


是否存在此行为的解决方法?

我终于能够从Microsoft获得有关此问题的响应:

Facebook Connect无法工作,因为它需要在多个页面之间进行通信,但Webauth代理一次只能有一个活动页面。这里的问题是foursquare启动一个弹出窗口进行Facebook授权,并等待弹出窗口完成并在第一个foursquare页面触发事件。对于Webauth,我们导航到ll弹出窗口内联,因此启动弹出窗口的第一个页面将消失,并且没有可以发送回第一个页面的事件

结果是,除了编写自己的登录过程和完全绕过WebAuthenticationBroker(我最终这样做了)之外,没有任何解决方法

TL;DR:WebAuthenticationBroker已损坏,目前没有计划修复它