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