簡體   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