我正在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;