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