我使用Xamarin基本要素作为我正在开发的Xamarin表单应用程序的一部分。我已经将它集成到我的aspnet.core后端中,而且它运行得很好。
但是当我在google和facebook登录时,我得到了一个id_token,但是如果我登录了google,我需要的是,而不是id_token。
我在启动时查看了“AddJwtBearer”部分的“AddAuthentication”方法,但是当我在控制器中使用'AuthenticateAsync‘方法时,我无法使它工作。
怎样才能做到这一点?后端基于以下示例中的代码:https://github.com/xamarin/Essentials/blob/develop/Samples/Sample.Server.WebAuthenticator/Controllers/MobileAuthController.cs
发布于 2022-01-31 15:55:09
试着从这里得到它:
var auth = await Request.HttpContext.AuthenticateAsync(scheme);
var idtoken = auth.Properties.GetTokenValue("id_token");或
string refreshToken = await HttpContext.GetTokenAsync("id_token"); 检查这门课
public class WebAuth
{
private const string AuthenticationUrl ="https://myapp.com/mobileauth/";
private string _accessToken = "";
private bool _isAuthenticated = false;
public string AuthToken
{
get => _accessToken;
set => SetProperty(ref _accessToken, value);
}
async Task OnAuthenticate(string scheme)
{
try
{
scheme = "Facebook";
WebAuthenticatorResult result = null;
var authUrl = new Uri(AuthenticationUrl + scheme);
var callbackUrl = new Uri("myapp://");
result = await WebAuthenticator.AuthenticateAsync(authUrl, callbackUrl);
AuthToken = string.Empty;
if (result.Properties.TryGetValue("name", out var name) && !string.IsNullOrEmpty(name))
{
AuthToken += $"Name: {name}{Environment.NewLine}";
}
if (result.Properties.TryGetValue("email", out var email) && !string.IsNullOrEmpty(email))
{
AuthToken += $"Email: {email}{Environment.NewLine}";
}
AuthToken += result?.AccessToken ?? result?.IdToken;
IsAuthenticated = true;
}
catch (Exception ex)
{
AuthToken = string.Empty;
}
}
}https://stackoverflow.com/questions/70460340
复制相似问题