我编写了一个基于 XAML 的 WinRT 应用程序,它通过 WebAuthenticationBroker.AuthenticateAsync 调用连接到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)
{
如果用户选择直接通过foursquare 进行身份验证,或者通过foursquare 注册,则此方法可以正常工作。但是,方形 OAuth 页面为用户提供了通过 Facebook 登录/注册的选项。如果选中,初始 Facebook 登录屏幕将正确显示;用户可以输入用户名/密码并选择“登录”按钮;然后窗口变为空白。似乎控制权正在传递给 Facebook 的弹出窗口,提示您授予权限。但是,WebAuthenticationBroker 没有显示这个。出于所有意图和目的,WebAuthenticationBroker 已挂起。
这种行为是否存在解决方法?