Boss Jeerapat
Boss Jeerapat

ยืนยัน Token ของ GoogleSignin ในฝั่งเซิร์ฟเวอร์

ต่อจากบทความก่อนหน้า

🔗
เปิดลิงก์
https://jeerapat.medium.com/%E0%B8%97%E0%B8%B3-google-sign-in-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-credential-manager-da14f0b8eb36?source=post_page-----90bc33007e60---------------------------------------
→

เราจะนำ JWT Token ไปใช้งานต่อในฝั่งของ Server โดยรับ token ได้จากเจ้าตัว GoogleIdTokenCredential จาก variable idToken ที่มีค่าเป็นชนิด String

ในฝั่งของ Google ก็จะมีไลบรารี่ที่ใช้ยืนยันโทเค็น โดยสนับสนุนเซอวิสภาษา Java, Python, Node.js, PHP บทความนี้ขอยกตัวอย่าง Python 🐍👄

ติดตั้งแพคเกจสองตัวนี้ โดย pip install ${package}

pip install google-auth-oauthlib pip install google-auth-httplib2

จากนั้นให้ import package เข้ามาในไฟล์

from google.oauth2 import id_token from google.auth.transport import requests

และเราจะยืนยัน token ด้วย

idinfo = id_token.verify_oauth2_token(token, requests.Request(), CLIENT_ID)

CLIENT_ID เราต้องเอามาจาก client id ชนิด Web Application นะ โดยวิธีไปเอามาจากบทความที่แล้วซึ่งลิงค์อยู่บนสุด 👍🏻

idinfo จะเป็น payload ที่ Google signin แนบมาให้ในโทเค็นจากฝั่งแอพเราสามารถรับข้อมูลได้ด้วย

iss = idinfo[“iss”] มีชนิดเป็น String บ่งบอกใครเป็นผู้สร้างและ Signed token

azp = idinfo[“azp”] มีชนิดเป็น String บ่งบอกองค์กรที่ได้รับอนุญาตให้ออก token

aud = idinfo[“aud”] มีชนิดเป็น String บ่งบอกออก token นี้สำหรับใคร

sub = idinfo[“sub”] มีชนิดเป็น String เป็น id ของผู้ใช้งาน

name = idinfo[“name”] มีชนิดเป็น String เป็นชื่อของผู้ใช้งาน

picture = idinfo[“picture”] มีชนิดเป็น String เป็นรูปโปรไฟล์ของผู้ใช้งาน

given_name มีชนิดเป็น String เป็นชื่อจริงของผู้ใช้งาน

family_name มีชนิดเป็น String เป็นนามสกุลของผู้ใช้งาน

iat มีชนิดเป็น Int token นี้ถูกสร้างวันไหน

exp มีชนิดเป็น Int token นี้ถูกหมดอายุวันไหน

💡 บางส่วนอาจจะไม่มีค่า หากผู้ใช้ไม่ได้ให้ข้อมูลกับ Google ไว้

สำหรับภาษาอื่น

🔗
เปิดลิงก์
https://developers.google.com/identity/gsi/web/guides/verify-google-id-token?ref=read.aluar.online&source=post_page-----90bc33007e60---------------------------------------#java
→