2

WebAuthenticationBroker.AuthenticateAndContinue在我的情况下使用时OnNavigatedTo,我MainPage得到以下异常:

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

但是,如果我创建一个带有单击事件的按钮,该按钮执行完全相同的函数调用,则不会出现异常。我认为原因是OnNavigatedTo触发事件时页面没有完全加载。

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

4

1 回答 1

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);            
    }
于 2014-04-30T22:14:54.980 回答