Google Sign-In API جدید

Google Identity Services (GIS) مجموعه جدیدی از APIها است که ورود و ثبت نام آسان و ایمن را در قالب بسته ای آسان برای توسعه دهندگان به کاربران ارائه می دهد. این سند یک API ورود به سیستم جدید Google (بخشی از GIS) را توضیح می دهد که می تواند برای شروع جریان ورود به سیستم یا ثبت نام هنگامی که کاربر روی دکمه "ورود به سیستم با Google" ضربه می زند، استفاده شود. این API را می توان به جای API های ورود به سیستم Google برای جریان های ورود به سیستم استفاده کرد.

شما باید از این API فقط زمانی استفاده کنید که کاربر صراحتاً قصد ورود به سیستم با Google را نشان دهد. به عنوان مثال، وقتی روی دکمه «ورود با Google» در برنامه شما کلیک می‌کنند، از این API استفاده کنید.

شما نباید از این API برای ترغیب کاربر برای ورود به سیستم هنگام راه اندازی برنامه یا در پاسخ به محرک دیگری مانند افزودن یک کالا به سبد خرید استفاده کنید. برای این موارد استفاده، از ورود به سیستم و ثبت نام با یک ضربه استفاده کنید.

هنگامی که جریان ورود به سیستم Google را با API جدید شروع می کنید، این رابط کاربری را نمایش می دهد:

ورود به سیستم گوگل

قبل از اینکه شروع کنی

یک پروژه Google API Console را پیکربندی کنید و پروژه 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
});

نتیجه ورود موفقیت آمیز همیشه نام کامل، ایمیل و آدرس تصویر نمایه کاربران را برمی گرداند. اگر به اطلاعات بیشتری نیاز دارید، می توانید کاربران را به یک جریان اطلاعات پروفایل کامل هدایت کنید.