Lấy Google email address từ access token
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
Đầ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
Thiếu cái scope, cảm ơn anh, em đã hiểu