如何获取使用 Google 或 Facebook 登录的用户的数据

How to get the data of the user who is logged in with Google or Facebook

应用程序中是否有函数或方法接受电子邮件地址、使用 google 或 facebook 登录的人的姓名等参数?有的话怎么样。

当我使用 google 登录时,我可以使用以下代码访问它。但我不知道如何通过facebook获取他们的信息。

 public class GoogleUserRequest
{
    public const string PROVIDER = "google";

    [JsonProperty("idToken")]
    [Required]
    public string IdToken { get; set; }
}



public async Task<UserApp> AuthenticateGoogleUserAsync(GoogleUserRequest request)
    {
        Payload payload = await ValidateAsync(request.IdToken, new ValidationSettings()
        {
            Audience = new[] {"GOOGLE CLİENT ID"}
        });

        return await ExternalLoginUser(GoogleUserRequest.PROVIDER, payload.Subject, payload.Email, payload.GivenName,
                payload.FamilyName);
    }

使用这些代码,我可以通过有效负载变量保留姓名、电子邮件、电子邮件验证等因素。如果我想用 facebook (Meta) 创建相同的内容,我应该做什么样的编码。

is there a function or method in the application that takes parameters such as email addresses, names of people who log in with google or facebook?

您可以通过SignInManager<TUser>.GetExternalLoginInfoAsync(String)方法获取当前登录的外部登录信息:

public class HomeController: Controller
{
    private readonly SignInManager<IdentityUser> _signInManager;

    public ExternalLoginModel(SignInManager<IdentityUser> signInManager)
    {
        _signInManager = signInManager;
    }

    public async Task<UserApp> AuthenticateGoogleUserAsync(GoogleUserRequest request)
    {          
        var info = await _signInManager.GetExternalLoginInfoAsync();
        var name = info.Principal.Identity.Name;
        var email = info.Principal.FindFirst(ClaimTypes.Email).Value;
    }
}