Получите access_token из Web API, если у вас есть токен, idToken и т. Д. От Google - PullRequest
0 голосов
/ 04 июля 2018

Я использовал angular-6-social-login , чтобы войти через Google на моем сайте, как показано в ссылке. Теперь он возвращает следующие данные =>

email:"xxxxx"
id:"xxxxxxx"
idToken:"xxxx.xxxxxxxxx.xxxxxx"
image:"https://lh5.googleusercontent.com/xxxx/photo.jpg"
name:"Abhishek Jaiswal"
provider:"google"
token:"ya29.GlztBZpLW2v1jld20GR0iHOjMiveYmDhnaDRjWmsmh8tH_DSVW4-lRnYIL4Eau2-ZKVXlFFK-alCk5-REBR22aKkeUUIats14KtXEGfHlZIw5iIlKP5LSuEAtmnG0w"

Я декодировал этот idToken как JSON Web Token Decoder в Web Api, перекрестно проверенный токен (accessToken, предоставленный google) со значением "at_hash" idToken. Теперь, после такой большой проверки, я проверяю предварительную регистрацию пользователя и регистрирую его внутри блока if.

Примечание: Я выполняю эти проверки и регистрации вручную. Поэтому я не использую методы, предоставляемые Web ApiIdentity, такие как ExternalLogin и т. Д.

В случае нормальных входов в систему, я отправляю пост-запрос к http://localhost:57310/token с именем пользователя, паролем и grant_type, и это предоставляет мне accessToken, поэтому он авторизуется.

Но, в этом случае, я уже использую API, поэтому мне не нужно ни одного пост-запроса, и у меня уже есть токен (от Google), но он не предоставляется веб-API, поэтому не авторизован.

1 Ответ

0 голосов
/ 04 июля 2018

Для этого случая использования я рекомендую использовать ng-gapi . Это позволит вам войти в систему с помощью Google, получить учетные данные (JWT с удостоверением личности) и запросить токен доступа, который будет использоваться с вызовами API Google.

За сценой стоит интеграция Google Sign-in API . Так что не беспокойтесь, например, об обновлении access_token, а также проверке подписи JWT.

...