Google Sign-In API ใหม่

Google Identity Services (GIS) คือ API ชุดใหม่ที่ช่วยให้ผู้ใช้ลงชื่อเข้าใช้และลงชื่อสมัครใช้ได้อย่างง่ายดายและปลอดภัย โดยนำเสนอเป็นแพ็กเกจสำหรับนักพัฒนาซอฟต์แวร์ที่ใช้งานได้ง่าย เอกสารนี้แสดงรายละเอียดของ API การลงชื่อเข้าใช้ Google ใหม่ (ซึ่งเป็นส่วนหนึ่งของ GIS) ที่สามารถใช้เพื่อเริ่มขั้นตอนการลงชื่อเข้าใช้หรือลงชื่อสมัครใช้เมื่อผู้ใช้แตะปุ่ม "ลงชื่อเข้าใช้ด้วย Google" คุณใช้ API นี้แทน Google Sign-In API ที่มีอยู่สำหรับขั้นตอนการลงชื่อเข้าใช้ได้

คุณควรใช้ API นี้เฉพาะเมื่อผู้ใช้แสดงความตั้งใจที่จะลงชื่อเข้าใช้ด้วย Google อย่างชัดแจ้งเท่านั้น เช่น ใช้ API นี้เมื่อผู้ใช้คลิกปุ่ม "ลงชื่อเข้าใช้ด้วย Google" ในแอปของคุณ

คุณไม่ควรใช้ API นี้เพื่อแจ้งให้ผู้ใช้ลงชื่อเข้าใช้เมื่อเปิดแอปหรือเพื่อตอบสนองต่อทริกเกอร์อื่น เช่น การเพิ่มสินค้าลงในรถเข็นช็อปปิ้ง สำหรับ กรณีการใช้งานเหล่านี้ ให้ใช้ การลงชื่อเข้าใช้และการลงชื่อสมัครใช้ด้วย One Tap

เมื่อคุณเริ่มขั้นตอนการลงชื่อเข้าใช้ Google ด้วย API ใหม่ ก็จะแสดง UI นี้

Google Sign-In

ก่อนเริ่มต้น

กำหนดค่าโปรเจ็กต์คอนโซล Google API และตั้งค่าโปรเจ็กต์ Android Studio

ส่งคำขอลงชื่อเข้าใช้

หากต้องการเปิดการทำงานของ Google Sign-In โดยใช้ Identity API ให้สร้างออบเจ็กต์ GetSignInRequest จากนั้นเรียกใช้ออบเจ็กต์ SignInClient ที่ getSignInIntent การโทรนี้ไม่พร้อมกันและเมื่อสําเร็จจะมี PendingIntent เพื่อเรียกใช้กล่องโต้ตอบ

    private static final int REQUEST_CODE_GOOGLE_SIGN_IN = 1; /* unique request id */

    private void signIn() {
        GetSignInIntentRequest request =
            GetSignInIntentRequest.builder()
                .setServerClientId(getString(R.string.server_client_id))
                .build();

        Identity.getSignInClient(activity)
            .getSignInIntent(request)
            .addOnSuccessListener(
                    result -> {
                        try {
                            startIntentSenderForResult(
                                    result.getIntentSender(),
                                    REQUEST_CODE_GOOGLE_SIGN_IN,
                                    /* fillInIntent= */ null,
                                    /* flagsMask= */ 0,
                                    /* flagsValue= */ 0,
                                    /* extraFlags= */ 0,
                                    /* options= */ null);
                        } catch (IntentSender.SendIntentException e) {
                            Log.e(TAG, "Google Sign-in failed");
                        }
                    })
            .addOnFailureListener(
                    e -> {
                        Log.e(TAG, "Google Sign-in failed", e);
                    });
    }

จัดการผลการลงชื่อเข้าใช้

ใน onActivityResult ให้เรียกข้อมูล SignInCredential ออบเจ็กต์ SignInCredential ที่แสดงผลจาก getSignInCredentialFromIntent มีข้อมูลเกี่ยวกับการเข้าสู่ระบบที่ถูกต้อง หากผู้ใช้ลงชื่อเข้าสู่ระบบไม่สำเร็จด้วยเหตุผลบางอย่าง ระบบจะส่ง ApiException

    @Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode == Activity.RESULT_OK) {
            if (requestCode == REQUEST_CODE_GOOGLE_SIGN_IN) {
                try {
                    SignInCredential credential = Identity.getSignInClient(this).getSignInCredentialFromIntent(data);
                    // Signed in successfully - show authenticated UI
                    updateUI(credential);
                } catch (ApiException e) {
                    // The ApiException status code indicates the detailed failure reason.
                }
            }
        }
    }
private ActivityResultLauncher<IntentSenderRequest> loginResultHandler = registerForActivityResult(new ActivityResultContracts.StartIntentSenderForResult(), result -> {
    // handle intent result here
});

ผลการลงชื่อเข้าใช้ที่สำเร็จจะแสดงชื่อเต็ม อีเมล และ URL ของรูปโปรไฟล์ของผู้ใช้ หากต้องการข้อมูลเพิ่มเติม คุณสามารถนำทางผู้ใช้ ไปยังขั้นตอนข้อมูลโปรไฟล์ที่สมบูรณ์ได้