繁体   English   中英

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

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

应用程序中是否有 function 或方法采用 email 地址、使用 google 登录的人名或 facebook 等参数? 如果有的话,怎么样。

当我使用谷歌登录时,我可以使用以下代码访问它。 但我不知道如何通过 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);
    }

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

应用程序中是否有 function 或方法采用 email 地址、使用 google 登录的人名或 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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM