在OnNavigatedTo事件中使用WebAuthenticationBroker.AuthenticateAndContinue时出现异常

时间:2014-04-24 11:42:25

标签: c# windows-phone-8.1

WebAuthenticationBroker.AuthenticateAndContinue的{​​{1}}事件中使用OnNavigatedTo时,我遇到以下异常:

  

远程过程调用失败。 (HRESULT异常:0x800706BE)

但是,如果我创建一个带有click事件的按钮,该按钮执行完全相同的函数调用,我不会得到异常。我认为原因是在触发MainPage事件时页面未完全加载。

那么我应该如何创建一个页面,在我导航到它时自动启动授权过程,而不需要中间控件(如按钮)?

1 个答案:

答案 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);            
    }