Boss Jeerapat

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

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

เราจะนำ 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 ไว้

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