ไคลเอ็นต์การลงชื่อเข้าใช้ด้วย One Tap จะดึงข้อมูลโทเค็นรหัส Google เมื่อผู้ใช้เลือกบัญชี Google โทเค็นระบุตัวตนคือการยืนยันที่ลงนามของข้อมูลระบุตัวตนของผู้ใช้ซึ่งมีข้อมูลโปรไฟล์พื้นฐานของผู้ใช้ด้วย ซึ่งอาจรวมถึงอีเมลที่ Google ยืนยันแล้ว
เมื่อโทเค็นระบุตัวตนพร้อมใช้งานแล้ว คุณจะใช้โทเค็นดังกล่าวเพื่อตรวจสอบสิทธิ์กับแบ็กเอนด์ของแอปอย่างปลอดภัย หรือเพื่อลงชื่อสมัครใช้บัญชีใหม่ให้ผู้ใช้โดยอัตโนมัติได้โดยไม่ต้องยืนยันอีเมลของผู้ใช้
หากต้องการลงชื่อเข้าใช้หรือลงชื่อสมัครใช้ผู้ใช้ด้วยโทเค็นระบุตัวตน ให้ส่งโทเค็นไปยังแบ็กเอนด์ของแอป ในแบ็กเอนด์ ให้ยืนยันโทเค็นโดยใช้ไลบรารีไคลเอ็นต์ Google API หรือไลบรารี JWT อเนกประสงค์ หากผู้ใช้ไม่เคยลงชื่อเข้าใช้แอปด้วยบัญชี Google นี้มาก่อน ให้สร้างบัญชีใหม่
หากเลือกที่จะใช้ Nonce เพื่อช่วยหลีกเลี่ยงการโจมตีด้วยการเล่นซ้ำหรือไม่ใช้ก็ได้ ให้ใช้ getNonce เพื่อส่ง Nonce ไปพร้อมกับโทเค็นระบุตัวตนไปยังเซิร์ฟเวอร์แบ็กเอนด์ และตรวจสอบค่าที่คาดไว้ เราขอแนะนําอย่างยิ่งให้คุณพิจารณาใช้ Nonce เพื่อปรับปรุงความปลอดภัยของผู้ใช้
รับโทเค็นระบุตัวตนจากออบเจ็กต์ข้อมูลเข้าสู่ระบบ
หลังจากดึงข้อมูลเข้าสู่ระบบของผู้ใช้แล้ว ให้ตรวจสอบว่าออบเจ็กต์ข้อมูลเข้าสู่ระบบมีโทเค็นระบุตัวตนหรือไม่ หากใช่ ให้ส่งไปยังแบ็กเอนด์
Java
public class YourActivity extends AppCompatActivity { // ... private static final int REQ_ONE_TAP = 2; // Can be any integer unique to the Activity. private boolean showOneTapUI = true; // ... @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case REQ_ONE_TAP: try { SignInCredential credential = oneTapClient.getSignInCredentialFromIntent(data); String idToken = credential.getGoogleIdToken(); if (idToken != null) { // Got an ID token from Google. Use it to authenticate // with your backend. Log.d(TAG, "Got ID token."); } } catch (ApiException e) { // ... } break; } } }
Kotlin
class YourActivity : AppCompatActivity() { // ... private val REQ_ONE_TAP = 2 // Can be any integer unique to the Activity private var showOneTapUI = true // ... override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) when (requestCode) { REQ_ONE_TAP -> { try { val credential = oneTapClient.getSignInCredentialFromIntent(data) val idToken = credential.googleIdToken when { idToken != null -> { // Got an ID token from Google. Use it to authenticate // with your backend. Log.d(TAG, "Got ID token.") } else -> { // Shouldn't happen. Log.d(TAG, "No ID token!") } } } catch (e: ApiException) { // ... } } } // ... }