通过WebAuthenticationBroker登录后,App挂起在Resuming屏幕上

时间:2014-04-10 17:12:27

标签: oauth windows-phone-8.1 fitbit

更新:当我在模拟器中运行应用程序时,似乎只会发生这种情况。当我在真实设备上运行时,一切都按预期工作。


我在我的应用中使用WebAuthenticationBroker让用户通过OAuth向Fitbit进行身份验证。

WebAuthenticationBroker成功地将我传回args(即包含令牌和秘密的最终URI),并且我能够进行后续调用以从Fitbit检索访问令牌。所有这些都有效as expected

我的问题是应用程序然后挂在“Resuming ...”行军蚂蚁屏幕上。这在WebAuthenticationBroker Fitbit登录屏幕消失后立即发生,并且与之后执行的任何代码无关。我删除了所有代码,但仍然会发生。

我用来启动WebAuthenticationBroker的调用是

string CallBackUrl = "http://localhost:8080/Fitbit/Callback";

string oauth_token = await GetFitbitRequestTokenAsync(CallBackUrl, ConsumerKey);

string FitbitUrl = "https://www.fitbit.com/oauth/authorize?oauth_token=" + oauth_token;

System.Uri StartUri = new Uri(FitbitUrl);
System.Uri EndUri = new Uri(CallBackUrl);

WebAuthenticationBroker.AuthenticateAndContinue(StartUri, EndUri, null, WebAuthenticationOptions.None);

我认为在所有这些之后我缺少一个步骤,这需要返回到我的应用页面。我已经尝试过各种我能想到的东西,但我不知道我需要在哪里以及如何才能使它工作。

我从WebAuthenticationManager返回带有令牌/秘密args的CallbackUrl的方式是

protected async override void OnActivated(IActivatedEventArgs e)
{
    base.OnActivated(e);

    var args = e as IContinuationActivatedEventArgs;
    if (args != null && args.Kind == ActivationKind.WebAuthenticationBrokerContinuation)
    {
        Frame rootFrame = Window.Current.Content as Frame;
        var wabPage = rootFrame.Content as IWebAuthenticationContinuable;
        wabPage.ContinueWebAuthentication(args as WebAuthenticationBrokerContinuationEventArgs);
    }

    Window.Current.Activate();
}

非常感谢帮助! :)

_ rndsum

0 个答案:

没有答案