Asp.net core Apple社交登录.Net核心Web API-如何访问用户&x27;s电子邮件
我们试图在一个有.Net核心Web API和Reactjs SPA的项目中实现与苹果的社交登录。由于响应类型和响应模式的限制,从前端,我们只能在成功登录时从apple获得授权码 我们可以使用以下逻辑在后端验证此授权代码。同样在响应中,它包含id_令牌,我们可以在其中访问一些其他信息,但不能访问电子邮件。我们计划做的是,如果授权代码有效,并且存在具有相同电子邮件的用户(电子邮件是用户名),它将根据使用asp.net core Identity framework实现的内置身份验证/授权引擎对用户进行身份验证并返回Auth JWT令牌Asp.net core Apple社交登录.Net核心Web API-如何访问用户&x27;s电子邮件,asp.net-core,oauth-2.0,asp.net-identity,apple-sign-in,Asp.net Core,Oauth 2.0,Asp.net Identity,Apple Sign In,我们试图在一个有.Net核心Web API和Reactjs SPA的项目中实现与苹果的社交登录。由于响应类型和响应模式的限制,从前端,我们只能在成功登录时从apple获得授权码 我们可以使用以下逻辑在后端验证此授权代码。同样在响应中,它包含id_令牌,我们可以在其中访问一些其他信息,但不能访问电子邮件。我们计划做的是,如果授权代码有效,并且存在具有相同电子邮件的用户(电子邮件是用户名),它将根据使用asp.net core Identity framework实现的内置身份验证/授权引擎对用户进
var clientSecret = CreateJwtToken();
var data = new Dictionary<string, string>
{
{ "client_id" , "xxx.xxxxx.com" },
{ "code" , authCode },
{ "scope" , "email" },
{ "grant_type" , "authorization_code" },
{ "redirect_uri", "http://6c52b7b4xx.ngrok.io/login/apple" },
{ "client_secret", clientSecret }
};
var formdata = new FormUrlEncodedContent(data);
var res = await client.PostAsync("https://appleid.apple.com/auth/token", formdata);
var authToken = await res.Content.ReadAsStringAsync();
var responseJSON = JObject.Parse(authToken);
var id_token = responseJSON.GetValue("id_token").ToString();
var clientSecret=CreateJwtToken();
var数据=新字典
{
{“client_id”,“xxx.xxxxx.com”},
{“代码”,authCode},
{“范围”,“电子邮件”},
{“授权类型”、“授权代码”},
{“重定向uri”http://6c52b7b4xx.ngrok.io/login/apple" },
{“客户机密”,客户机密}
};
var formdata=新FormUrlEncodedContent(数据);
var res=wait client.PostAsync(“https://appleid.apple.com/auth/token“,formdata);
var authToken=await res.Content.ReadAsStringAsync();
var responseJSON=JObject.Parse(authToken);
var id_token=responseJSON.GetValue(“id_token”).ToString();
我不确定我错过了什么。我们有没有办法在后端访问用户的电子邮件?如果没有,有没有更好的方法来实现苹果的认证
谢谢