在MAUI Blazor混合中与浏览器交互,以实现谷歌自主



我正在MAUI Blazor混合应用程序中实现firebase身份验证。

使用流行的FirebaseAutension.net库中的web api。

我需要做的是打开一个带有谷歌同意屏幕的浏览器窗口,并捕获它重定向到的url。

@inject NavigationManager navmanager;
var client = new FirebaseAuthClient(config);
var userCredential = await client.SignInWithRedirectAsync(FirebaseProviderType.Google, async uri =>
{
navmanager.NavigateTo(uri);

//return credential
});

这很好用,但我不确定在浏览器打开后如何与它交互。有什么建议吗?

编辑:我想我会尝试一些JS interop。必须有一种方法来捕获重定向事件。

var userCredential = await client.SignInWithRedirectAsync(FirebaseProviderType.Google, async uri =>
{
string credential = "";

async Task OpenWindow()
{
await JSRuntime.InvokeAsync<string>("authURI", uri);
}
await OpenWindow();
//wait for redirect


return credential;
});
function authURI(uri) {
var newWindow = window.open(uri);
console.log(newWindow);

所以这不起作用,并将null打印到控制台

WebAuthenticator是从网页获取访问令牌的好选择。API主要由一个方法AuthenticateAsync组成,该方法使用两个参数:第一个uri应用于启动web浏览器流。对于第二个uri,由于您已经注册了firebase,因此可以处理流最终回调到的uri。这是示例:

var authResult = await WebAuthenticator.AuthenticateAsync(
new Uri("https:"),
new Uri("myapp://"));
var accessToken = authResult?.AccessToken;

相关内容

  • 没有找到相关文章

最新更新