اطلاعات کاربری یک کاربر را ذخیره کنید

پس از اینکه کاربران با موفقیت به سیستم وارد شدند، حساب ایجاد کردند یا رمز عبور را تغییر دادند، به آن‌ها اجازه دهید اعتبارنامه‌های خود را ذخیره کنند تا احراز هویت آینده در برنامه شما خودکار شود.

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

یک پروژه Android Studio را پیکربندی کنید .

اعتبار فروشگاه

یک شی Credential حاوی اطلاعات ورود به سیستم کاربر ایجاد کنید. به عنوان مثال، برای اینکه به کاربران اجازه دهید پس از ورود موفقیت آمیز با رمزهای عبور خود، اطلاعات کاربری خود را ذخیره کنند:

Credential credential = new Credential.Builder(email)
        .setPassword(password)  // Important: only store passwords in this field.
                                // Android autofill uses this value to complete
                                // sign-in forms, so repurposing this field will
                                // likely cause errors.
        .build();

یا، برای مثال، پس از اینکه کاربران با موفقیت با حساب Google خود وارد شدند :

GoogleSignInAccount gsa = signInTask.getResult();
Credential credential = new Credential.Builder(gsa.getEmail())
        .setAccountType(IdentityProviders.GOOGLE)
        .setName(gsa.getDisplayName())
        .setProfilePictureUri(gsa.getPhotoUrl())
        .build();

Smart Lock گفتگوی ذخیره

سپس، CredentialsClient.save() فراخوانی کنید تا اعتبار کاربران ذخیره شود. اگر تماس با CredentialsClient.save() فوراً موفقیت آمیز نباشد، اعتبارنامه ممکن است جدید باشد، در این صورت کاربر باید درخواست ذخیره را تأیید کند. ResolvableApiException را با startResolutionForResult() حل کنید تا از کاربر درخواست تایید شود.

اگر کاربر تصمیم بگیرد اعتبارنامه ها را ذخیره نکند، دیگر از کاربر خواسته نمی شود که اعتبار هیچ حساب کاربری را برای برنامه ذخیره کند. اگر پس از انصراف کاربر CredentialsClient.save() تماس بگیرید، نتیجه آن دارای کد وضعیت CANCELED خواهد بود. کاربر می تواند بعداً از برنامه تنظیمات Google در بخش Smart Lock for Passwords شرکت کند. کاربر باید ذخیره اعتبارنامه را برای همه حساب ها فعال کند تا دفعه بعد از شما خواسته شود که اعتبارنامه ها را ذخیره کنند.

mCredentialsClient.save(credential).addOnCompleteListener(
        new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "SAVE: OK");
                    Toast.makeText(activity, "Credentials saved", Toast.LENGTH_SHORT).show();
                    return;
                }

                Exception e = task.getException();
                if (e instanceof ResolvableApiException) {
                    // Try to resolve the save request. This will prompt the user if
                    // the credential is new.
                    ResolvableApiException rae = (ResolvableApiException) e;
                    try {
                        rae.startResolutionForResult(this, RC_SAVE);
                    } catch (IntentSender.SendIntentException exception) {
                        // Could not resolve the request
                        Log.e(TAG, "Failed to send resolution.", exception);
                        Toast.makeText(activity, "Save failed", Toast.LENGTH_SHORT).show();
                    }
                } else {
                    // Request has no resolution
                    Toast.makeText(activity, "Save failed", Toast.LENGTH_SHORT).show();
                }
            }
        });</pre>

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        // ...

        if (requestCode == RC_SAVE) {
            if (resultCode == RESULT_OK) {
                Log.d(TAG, "SAVE: OK");
                Toast.makeText(this, "Credentials saved", Toast.LENGTH_SHORT).show();
            } else {
                Log.e(TAG, "SAVE: Canceled by user");
            }
        }

        // ...

    }

پس از ذخیره اعتبار، آنها را با فراخوانی CredentialsClient.request() بازیابی کنید.

هدف قرار دادن اندروید O و بالاتر

وقتی اطلاعات رمز عبور را با استفاده از Smart Lock در دستگاه‌های دارای Android O یا جدیدتر ذخیره می‌کنید، Smart Lock در صورت امکان از گفتگوی تأیید تکمیل خودکار بومی در گفتگوی خود استفاده می‌کند. (توجه داشته باشید که اعتبارنامه های ذخیره شده با استفاده از تکمیل خودکار با Google به صورت دو جهته با Smart Lock for Passwords به اشتراک گذاشته می شود.)