現在、C#でWebView2を使ったブラウザを作成しています。
URLを指定して、WEBページを表示することが出来るようになった程度です。
実現したいこと
アカウント認証のあるサイトで、「パスワードの保存」を行いたいと考えています。
ログイン時にパスワードを保存しましますか?と聞いてくる機能です
CoreWebView2Settings.IsPasswordAutosaveEnabled というプロパティで実現できないかと思案しているのですがうまくいきません。
WebView2の機能としてあるのではないかと期待しているのですが可能でしょうか?
ソースコード
MainWindow.xaml.cs
1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6using System.Windows; 7using System.Windows.Controls; 8using System.Windows.Data; 9using System.Windows.Documents; 10using System.Windows.Input; 11using System.Windows.Media; 12using System.Windows.Media.Imaging; 13using System.Windows.Navigation; 14using System.Windows.Shapes; 15using Microsoft.Web.WebView2.Core; 16 17namespace SampleBrowser 18{ 19 public partial class MainWindow : Window 20 { 21 public static RoutedCommand PasswordAutosaveCommand = new RoutedCommand(); 22 23 CoreWebView2Settings _webViewSettings; 24 CoreWebView2Settings WebViewSettings 25 { 26 get 27 { 28 if (_webViewSettings == null && webView?.CoreWebView2 != null) 29 { 30 _webViewSettings = webView.CoreWebView2.Settings; 31 } 32 return _webViewSettings; 33 } 34 } 35 CoreWebView2Environment _webViewEnvironment; 36 CoreWebView2Environment WebViewEnvironment 37 { 38 get 39 { 40 if (_webViewEnvironment == null && webView?.CoreWebView2 != null) 41 { 42 _webViewEnvironment = webView.CoreWebView2.Environment; 43 } 44 return _webViewEnvironment; 45 } 46 } 47 48 public MainWindow() 49 { 50 InitializeComponent(); 51 } 52 53 void PasswordAutosaveCmdExecuted(object target, ExecutedRoutedEventArgs e) 54 { 55 WebViewSettings.IsPasswordAutosaveEnabled = !WebViewSettings.IsPasswordAutosaveEnabled; 56 } 57 } 58}
MainWindow.xaml
1<Window x:Class="SampleBrowser.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:local="clr-namespace:SampleBrowser" 7 xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf" 8 mc:Ignorable="d" 9 Title="SampleBrowser" Height="800" Width="1000" Background="black" 10 MinWidth="790"> 11 12 <Window.Resources> 13 <wv2:CoreWebView2CreationProperties 14 x:Key="FixedWebView2CreationProperties" 15 BrowserExecutableFolder="Microsoft.WebView2.FixedVersionRuntime.101.0.1210.39.x64" 16 UserDataFolder="C:\temp" /> 17 </Window.Resources> 18 <Grid> 19 <Grid.ColumnDefinitions> 20 <ColumnDefinition/> 21 </Grid.ColumnDefinitions> 22 <wv2:WebView2 CreationProperties="{StaticResource FixedWebView2CreationProperties}" 23 Source="https://account.nicovideo.jp/login?site=niconico&time=1661417293&hash_key=5c045af1&next_url=" 24 Name = "webView"/> 25 26 </Grid> 27 28</Window>
[Password autosave + suggest · Issue #2291 · MicrosoftEdge/WebView2Feedback](https://github.com/MicrosoftEdge/WebView2Feedback/issues/2291)
> Fix is available in runtimes v101.0.1203.0+. Thanks!
となっているのでクリアはしている気がするのですが、最新のランタイムあるいはエバーグリーンモードではどうなりますか?
公式サンプルでざっと確認したところ、ポップアップが出て保存されました(104.0.1293.63)
[WebView2Samples/SampleApps/WebView2WpfBrowser at main · MicrosoftEdge/WebView2Samples](https://github.com/MicrosoftEdge/WebView2Samples/tree/main/SampleApps/WebView2WpfBrowser)
ご返信頂きましてありがとうございます。
出来るという事が分かり安心致しました。
状況としましては、最新のランタイムを入れているのですが、ポップアップが出ませんでした。
公式サンプルですが、私の環境でビルドしようとするとインストールしているframeworkをインストールするようにエラーが出てしまい、断念しておりました。
サンプルを動かして確認できるようにチャレンジしたいと思います。
ありがとうございます。
> 状況としましては、最新のランタイムを入れているのですが、ポップアップが出ませんでした。
BrowserExecutableFolderで特定バージョン(101.0.1210.39.x64)を指定しているように見えますが。。。
BrowserExecutableFolderを書かなければEvergreenになるという認識ですが違いますかね?
[WebView2Samples/App.xaml at main · MicrosoftEdge/WebView2Samples](https://github.com/MicrosoftEdge/WebView2Samples/blob/main/SampleApps/WebView2WpfBrowser/App.xaml#L18)
> 公式サンプルですが、私の環境でビルドしようとするとインストールしているframeworkをインストールするようにエラーが出てしまい、断念しておりました。
私も警告?は出ましたが、気にせず実行しました^^;
netcoreapp3.0;net462 がターゲットですがどちらも入っていません(うちで入っているのはcoreは3.1 fwは4.8)
どちらをターゲットしてビルドしても動作しました。
度々返信ありがとうございます。
一から環境を作り直してみたところ、サンプルを動かすことができました。大変助かりました。
また色々とご指摘ありがとうございます。全く理解していませんでした;;
あとUIから有効にするのではなく、最初からAutoSaveを有効にするようにしたいと考えています。
> 最初からAutoSaveを有効にするようにしたいと考えています。
デモなので切り替えられるようになっていますが、常に有効にするなら
CoreWebView2InitializationCompleted
かなんかで
WebViewSettings.IsPasswordAutosaveEnabled = true;
とするだけじゃないですかね?(未確認)
[WebView2Samples/MainWindow.xaml.cs at main · MicrosoftEdge/WebView2Samples](https://github.com/MicrosoftEdge/WebView2Samples/blob/main/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs#L1431)
サンプルに頂いた内容を追加することで、最初から有効になることが確認できました。
何度も本当にありがとうございます!
サンプルから必要なプログラムをソースコードに組み込んで試してみたいと思います。
いけそうですね^^
ご自身のコードでも確認が取れましたら、お手数ですが閲覧者にもわかる程度にまとめていただいて「自己解決」としてください。
[teratail【テラテイル】|ITエンジニア特化型Q&Aサイト](https://teratail.com/help#resolve-myself)
時間かかりましたが、自身のソースコードにも適用して、常時パスワードの保存ができるようになりました!
改めてまとめましたら解決方法を記載するように致します。(自己解決とは言い辛いですが^^;)
丁寧に教えて頂きましてありがとうございました!
回答1件
あなたの回答
tips
プレビュー