在WebAuthenticationBroker.AuthenticateAndContinue
的{{1}}事件中使用OnNavigatedTo
时,我遇到以下异常:
远程过程调用失败。 (HRESULT异常:0x800706BE)
但是,如果我创建一个带有click事件的按钮,该按钮执行完全相同的函数调用,我不会得到异常。我认为原因是在触发MainPage
事件时页面未完全加载。
那么我应该如何创建一个页面,在我导航到它时自动启动授权过程,而不需要中间控件(如按钮)?
答案 0 :(得分:3)
如果我尝试在页面Loaded事件上执行该令牌请求函数,我会得到与您相同的错误:
String FacebookURL = "https://www.facebook.com/dialog/oauth?client_id=" + Uri.EscapeDataString(FacebookClientID.Text) + "&redirect_uri=" + Uri.EscapeDataString(FacebookCallbackUrl.Text) + "&scope=read_stream&display=popup&response_type=token";
System.Uri StartUri = new Uri(FacebookURL);
System.Uri EndUri = new Uri(FacebookCallbackUrl.Text);
WebAuthenticationBroker.AuthenticateAndContinue(StartUri, EndUri, null, WebAuthenticationOptions.None);
我以前使用的解决方法涉及DispatcherTimer
DispatcherTimer timer = new DispatcherTimer();
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
timer.Interval = new TimeSpan(0, 0, 0);
timer.Tick += timer_Tick;
timer.Start();
}
void timer_Tick(object sender, object e)
{
timer.Stop();
String FacebookURL = "https://www.facebook.com/dialog/oauth?client_id=" + Uri.EscapeDataString(FacebookClientID.Text) + "&redirect_uri=" + Uri.EscapeDataString(FacebookCallbackUrl.Text) + "&scope=read_stream&display=popup&response_type=token";
System.Uri StartUri = new Uri(FacebookURL);
System.Uri EndUri = new Uri(FacebookCallbackUrl.Text);
WebAuthenticationBroker.AuthenticateAndContinue(StartUri, EndUri, null, WebAuthenticationOptions.None);
}