Yêu cầu thg 6 6, 2018 10:30 SA 2885 2 1
  • 2885 2 1
0

Lấy Google email address từ access token

Chia sẻ
  • 2885 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 CÂU TRẢ LỜI


Đã trả lời thg 6 7, 2018 12:36 SA
Đã được chấp nhận
+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 😄

Chia sẻ
Avatar Le Quang Canh @lequangcanh
thg 6 7, 2018 2:44 SA

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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí