我已经存在一个C# ASP.NET WebAPI 2.0
项目,并且有几种方法可以用于另一个网站。此WebAPI项目没有任何身份验证,并返回JSON
数据。第一种方法从网站获取两个参数:电子邮件和密码,然后在MS SQL表中对其进行检查并返回JSON
(成功或错误):如果成功,则我创建了一些令牌,并添加了令牌和< strong> user_id 到另一个MS SQL表。如果一切正常,此方法将返回令牌。
[HttpPost]
[Route("api/v1/auth/email-login")]
[ActionName("EmailLogin")]
public IHttpActionResult Postpipeline_EmailLogin([FromBody] PostAuthItem postAuthItem)
{
try
{
int? userId = db.USERS_GetUserId(postAuthItem.Email, postAuthItem.Password).FirstOrDefault();
if (userId == null)
{
return Ok(new
{
Error = "Wrong email or password!"
});
}
else
{
string token = this.GetToken(40);
db.TOKENS_Add(userId, token);
db.SaveChanges();
return Ok(new
{
Token = token
});
}
}
catch (Exception ex)
{
return new System.Web.Http.Results.ResponseMessageResult(Request.CreateErrorResponse((HttpStatusCode)400, new HttpError("Http error! " + ex.Message + " " + ex.InnerException.Message)));
}
}
现在通过Google授权已添加到网站。因此,我需要添加新方法,该方法将通过Google检查成功或错误的身份验证。 网站开发者仅向我发送 access_token ,例如:
Request:
{
"access_token": "ya47.Kdd_KeQ0mQiTzom20dQ6M83742KMYQpkCUqCZv0UbU2CjhMIuxIT5ugRXwIrOUcV-TGbUztMiRDRPzh0INrGgh7gqXyaIfyQAnNMmP0GhXRc6bbanEiPxV7fK9ss"
}
是否有可能通过此请求检查有效的Google用户?
答案 0 :(得分:1)
您可以直接通过Userinfo端点
GET /userinfo/v2/me HTTP/1.1
Host: www.googleapis.com
Content-length: 0
Authorization: Bearer 29.GltcBsh3Q-qbIEslOBcifBKlRh2GfE0-P11tDMgBx_WdWdH1TG6iWkDtzj0e_zIERaDyq6b_oseOIiSpG3iO0LIeQuAAyn5VVDe50WVmdtWhrMiN27wTsUJY0jxP
这将返回有关用户的信息
{
"picture": "https://lh5.googleusercontent.com/-a1CWlFnA5xE/AAAAAAAAAAI/AAAAAAAAl1I/UcwPajZOuN4/photo.jpg",
"name": "Linda Lawton",
"family_name": "Lawton",
"locale": "en",
"gender": "female",
"link": "https://plus.google.com/+LindaLawton",
"given_name": "Linda",
"id": "117200475532672775346"
}