Asked Jun 6th, 2018 10:30 a.m. 2859 2 1
  • 2859 2 1
0

Lấy Google email address từ access token

Share
  • 2859 2 1

Mình đang sử dụng thư viện Google API Client (https://github.com/google/google-api-ruby-client) trong ứng dụng để xác thực người dùng sử dụng dịch vụ Google Calendar của Google Sau khi đăng nhập xác thực thành công thì Google trả về access token và refresh token Có cách nào để lấy email address của user từ access token không nhỉ?

1 ANSWERS


Answered Jun 7th, 2018 12:36 a.m.
Accepted
+3

Đầu tiên, bạn cần chắc chắn rằng lúc users thực thiện việc authentication ở trang của Google, bạn có request scope cho phép bạn lấy email của user.

Danh sách các scope của Google APIs bạn có thể check ở đây https://developers.google.com/identity/protocols/googlescopes

Như bạn thấy thì có riêng một scope là userinfo.email, và bạn cần phải request scope đó thì mới có thể lấy được thông tin email của users sau này.

Sau khi đã request đủ scope, và đã có access token rồi thì bạn chỉ cần gửi request đến endpoint /userinfo/v2/me (mình không rõ trong thư viện Google API Client thì nó là hàm gì nữa, bạn thử check code hay documents xem sao nhé 😂) là có thể lấy được thông tin profile của user, kiểu như sau:

{
  "family_name": "Thang", 
  "name": "Tran Duc Thang", 
  "picture": "link/to/avatar.jpg", 
  "gender": "male", 
  "email": "email@gmail.com", 
  "link": "https://plus.google.com/thangtd", 
  "given_name": "Tran Duc", 
  "id": "1234123123123123123123", 
  "verified_email": true
}

Bạn có thể vào trang https://developers.google.com/oauthplayground để test các scope cũng như endpoint của Google APIs 😃 Ở phần 1 (Select & authorize APIs) thì nhớ chọn scope https://www.googleapis.com/auth/userinfo.email là được 😄

Share
Avatar Le Quang Canh @lequangcanh
Jun 7th, 2018 2:44 a.m.

Thiếu cái scope, cảm ơn anh, em đã hiểu

+1
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.