尝试获取 UserCredential 时在应用程序内置的 c# WebBrowser 组件上显示身份验证页面

Display authentication page on app built-in c# WebBrowser component when try to get UserCredential

我之前使用以下代码片段检索 UserCredential

UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(...);

首次认证时会启动默认浏览器并显示认证页面。

现在我想在我的 WPF 应用程序中添加一个 WebBrowser 组件,我想在我的内置 WebBrowser 组件上显示身份验证页面,但我可以找不到实现它的方法。

如有任何帮助,我们将不胜感激。

目前 Google .net 客户端库不支持此功能。目前 GoogleWebAuthorizationBroker.AuthorizeAsync 只能打开一个新的浏览器,无法获取授权 URI 以将其嵌入到您自己的网络浏览器组件中。

有一个 windows phone UserControl here 的示例,不过我还没有亲自测试过。可能有帮助

<UserControl x:Class="Google.Apis.Auth.OAuth2.WebAuthenticationBrokerUserControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    mc:Ignorable="d"
    x:ClassModifier="internal"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    d:DesignHeight="480" d:DesignWidth="480">

    <Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}" 
          HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <phone:WebBrowser Name="browser"
                          IsScriptEnabled="True"
                          Navigating="OnBrowserNavigating"
                          NavigationFailed="OnBrowserNavigationFailed"
                          Navigated="OnBrowserNavigated" />
        <ProgressBar Name="Loader" Height="10" Margin="10" VerticalAlignment="Top" IsIndeterminate="True" />
    </Grid>
</UserControl>

客户端库的源代码可以在GitHub上找到它是一个开源项目,欢迎您将其添加到项目中。

目前还有一个问题请求。 GoogleWebAuthorizationBroker in embedded browser?