Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CoreWebView2 NewWindow and DevTools windows not showing up - Microsoft UWP Store (Signed app) #3386

Open
DotNet-Fan opened this issue Apr 12, 2023 · 12 comments
Assignees
Labels
bug Something isn't working tracked We are tracking this work internally.

Comments

@DotNet-Fan
Copy link

DotNet-Fan commented Apr 12, 2023

Microsoft WebView2 experts,

The UWP app has a webview2 control and uses social login to authenticate the user . The webview2 instance is subscribed to the newwindowrequested event and works perfectly when build and executed from the visual studio , opens a new window and authentication works well.
The app is published (msixupload) to the window store for testing and noticed that the social login new window is not coming at all.
To test this i have created a sideload msixbundle and installed it locally and that works perfectly fine .
Why when installed through the Microsoft store applet , the webview2 behaves differently for new window feature. How to fix this as this is critical for social logins.

This is posted in Microsoft Q&A and please see the reference -
https://learn.microsoft.com/en-us/answers/questions/1221866/microsoft-uwp-store-corewebview2-newwindowrequeste

Please advise.

Windows 11 64 - Microsoft Windows [Version 10.0.22621.1413]

Microsoft.UI.Xaml.Controls - v 2.8.2

AB#38775174

@DotNet-Fan DotNet-Fan added the bug Something isn't working label Apr 12, 2023
@DotNet-Fan DotNet-Fan changed the title CoreWebView2.NewWindowRequested - Microsoft UWP Store CoreWebView2.NewWindowRequested Social Login Issue - Microsoft UWP Store Apr 12, 2023
@DotNet-Fan DotNet-Fan changed the title CoreWebView2.NewWindowRequested Social Login Issue - Microsoft UWP Store CoreWebView2 NewWindow not coming up for Social Logins - Microsoft UWP Store Apr 13, 2023
@david-risney
Copy link
Contributor

What does your NewWindowRequested event handler do? If you leave the CoreWebView2NewWindowRequestedEventArgs.Handled property false, and you leave the CoreWebView2NewWindowRequestedEventArgs.NewWindow property null, then WebView2 will open the new window for you by itself. However, when running as a UWP app in an appcontainer and signed and properly installed (rather than debugging via VS), WebView2 currently has a bug where it cannot open its own windows like for NewWindowRequested (this bug also applies to opening DevTools via F12 or Ctrl+Shift+I - it cannot open the DevTools window).

@david-risney
Copy link
Contributor

As a workaround to this bug, you can handle the CoreWebView2.NewWindowRequested event yourself, mark Handled true, set the NewWindow property to a new CoreWebView2 that you host in a new window.

@DotNet-Fan
Copy link
Author

DotNet-Fan commented Apr 15, 2023

Hi @david-risney,

Thanks and Appreciate your input.
The newWindowRequested event handler is mainly used for showing a message that a new window will be opened to authenticate using social login frameworks like Google/Facebook.
It sets the CoreWebView2NewWindowRequestedEventArgs.Handled to false and let the popup window open by itself for authentication and once authenticated it closes automatically.
And if a new window is requested from other URLs, it just sets that to the current webview2 instance and it doesn’t open a popup.
e.NewWindow = sender;
I noticed this issue only when I signed the app package, submit to the store, and install it from the Microsoft Store Windows applet.
Any plans for releasing the fix in the coming days?
For the workaround, If I set Handled to true, the NewWindow property to new CoreWebview2 that is hosted in a new UWP ContentDialog and navigate to the Google/Facebook URL, will it close the window automatically once the authentication is successful similar to the normal behavior?
Please advise.

@DotNet-Fan
Copy link
Author

Hi @david-risney

It is similiar to webview2 navigating to https://www.twitter.com and when user tries to sign in using Google Account or Apple account , it opens the respective login page in popup window and when the authentication is successful, it closes and the twitter page refreshes with the logged in content.

@david-risney
Copy link
Contributor

Any plans for releasing the fix in the coming days?

Unfortunately, no it is a complicated bug for us.

For the workaround, If I set Handled to true, the NewWindow property to new CoreWebview2 that is hosted in a new UWP ContentDialog and navigate to the Google/Facebook URL, will it close the window automatically once the authentication is successful similar to the normal behavior?

If the window closes that would be the auth page using window.close in JavaScript to close the page. You can watch for that and close your own app window with CoreWebView2.WindowCloseRequested.

@DotNet-Fan
Copy link
Author

Thank you @david-risney for your advice. I tried it with WindowCloseRequested event but unfortunately ,for the social logins the webview2 doesn't fire the WindowCloseRequested event at all
For google login i see the console error Uncaught TypeError: Cannot read properties of null (reading 'postMessage').

So i set CoreWebView2.Settings.IsWebMessageEnabled= true , but still the problem persists and the WindowCloseRequested event is not fired.

for facebook login/apple id also once the authentication is successful the event is not fired.

To reproduce you just have to navigate to twitter/pinterest.com and try to login to google/facebook/appleid and in the newwindowrequested event handler show the content dialog that is having authwebview2 control and the authwebview2control is subscribed to WindowCloseRequested.

Social logins with new window are an important features for many apps who rely on social logins and This is very critical piece for webview2 right?

@david-risney
Copy link
Contributor

You could allow the end user to close the window themselves, or you could try to detect that the auth flow is complete. For instance, if you know a URL that auth flow will navigate to when the auth flow is complete, you could watch for that in NavigationStarting and use that to determine that the auth flow is complete.

If the web content isn't attempting to close the window via script, then I'm not sure how the window was closing for you automatically previously. If you can figure that out then I can try to come up with other ideas to help.

@champnic champnic added the tracked We are tracking this work internally. label Apr 19, 2023
@DotNet-Fan
Copy link
Author

@david-risney I guess the the close event is not firing for the instance that is being shown in the content dialog. As a temporary workaround i'm not opening the page in a content dialog but instead providing the main webwview2 instance and then based on the window close event then act on the remaining steps of refreshing the actual URL.

@DotNet-Fan
Copy link
Author

@david-risney @champnic

The code which was working earlier is broken now . Please help.

In the CoreWebView2.NewWindowRequested handler if you set the Handled true, set the NewWindow property to current webview instance
if (sender != null)
e.NewWindow = sender;

It opens the window in to a new popup and not within the current webview and this is broken now.

Windows 11 64 - Microsoft Windows [Version 10.0.22621.2861]

Microsoft.UI.Xaml.Controls - v 2.8.6

Microsoft EdgeWebview - 120.0.2210.77

@DotNet-Fan
Copy link
Author

#4250

@DotNet-Fan
Copy link
Author

Hi @david-risney

I had to refer the version 119.0.2151.97 due to an issue #4250 in the 120.0 version.

I have observed a strange issue lately where in an webview2 instance you subscribe to NewWindowRequested event and WindowCloseRequested , then on firsttime these handlers would be hit during open and close popup. But in the same webview2 instance if the popup is called again newwindowrequested event is not fired second time.

Any Idea?

@champnic
Copy link
Member

We are also going to use this issue to track adding support for opening the built-in DevTools in a signed UWP app, which is failing for the same underlying reason.

If you need to debug the WebView2 inside of a signed UWP app, please follow the instructions here to use the remote debugging tools:
https://learn.microsoft.com/en-us/microsoft-edge/webview2/how-to/remote-debugging-desktop

@champnic champnic changed the title CoreWebView2 NewWindow not coming up for Social Logins - Microsoft UWP Store CoreWebView2 NewWindow and DevTools windows not showing up - Microsoft UWP Store (Signed app) May 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working tracked We are tracking this work internally.
Projects
None yet
Development

No branches or pull requests

3 participants