Добавить метод аутентификации Google в существующий проект ASP.NET WebAPI - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть C# ASP.NET WebAPI 2.0 проект с несколькими методами для другого сайта .Этот проект WebAPI не имеет никакой аутентификации и возвращает данные JSON.Первый метод принимает два параметра из website : Email и Password , затем проверяет его в таблице MS SQL и возвращает JSON ( success или неправильно ): если успех , тогда я создаю токен и добавляю токен с 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 с этим запросом?

1 Ответ

0 голосов
/ 22 ноября 2018

Вы можете напрямую перейти через конечную точку 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"
}
...