WebAuthenticationBroker.AuthenticateAsync呼び出しを介してfoursquareに接続するXAMLベースのWinRTアプリを作成しました。認証コードは次のとおりです。
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はハングしています。
この動作の回避策はありますか?