Yêu cầu truy xuất thông tin đăng nhập của người dùng có thể không thực hiện được khi người dùng chưa lưu thông tin đăng nhập hoặc khi người dùng chưa đăng ký ứng dụng của bạn. Trong các hãy sử dụng Credentials API để truy xuất gợi ý đăng nhập, chẳng hạn như tên và địa chỉ email của người dùng. Hãy dùng các gợi ý này để điền sẵn thông tin đăng nhập vào ứng dụng của bạn và biểu mẫu đăng ký, giúp đẩy nhanh quá trình giới thiệu ứng dụng.
Trên Android 6.0 (Marshmallow) trở lên, ứng dụng của bạn không cần yêu cầu mọi quyền đối với thiết bị hoặc thời gian chạy để truy xuất gợi ý đăng nhập bằng API Thông tin xác thực.
Trước khi bắt đầu
Định cấu hình dự án Android Studio.
Truy xuất gợi ý đăng nhập
Để truy xuất gợi ý đăng nhập, trước tiên hãy định cấu hình hộp thoại bộ chọn gợi ý bằng cách
tạo một HintRequest
. Sau đó, hãy truyền đối tượng HintRequest
đến
CredentialsClient.getHintPickerIntent()
để có ý định nhắc người dùng chọn một địa chỉ email. Cuối cùng, hãy bắt đầu
ý định bằng startIntentSenderForResult()
.
HintRequest hintRequest = new HintRequest.Builder()
.setHintPickerConfig(new CredentialPickerConfig.Builder()
.setShowCancelButton(true)
.build())
.setEmailAddressIdentifierSupported(true)
.setAccountTypes(IdentityProviders.GOOGLE)
.build();
PendingIntent intent = mCredentialsClient.getHintPickerIntent(hintRequest);
try {
startIntentSenderForResult(intent.getIntentSender(), RC_HINT, null, 0, 0, 0);
} catch (IntentSender.SendIntentException e) {
Log.e(TAG, "Could not start hint picker Intent", e);
}
Người dùng được nhắc chọn một địa chỉ email để sử dụng.
Sau đó, trong phương thức onActivityResult()
của hoạt động, hãy truy xuất gợi ý từ
Credential.EXTRA_KEY
, hãy kiểm tra xem người dùng có trong cơ sở dữ liệu người dùng của bạn hay không,
và bắt đầu hoạt động thích hợp với gợi ý về thông tin đăng nhập.
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == RC_HINT) { if (resultCode == RESULT_OK) { Credential credential = data.getParcelableExtra(Credential.EXTRA_KEY); Intent intent; // Check for the user ID in your user database. if (userDatabaseContains(credential.getId())) { intent = new Intent(this, SignInActivity.class); } else { intent = new Intent(this, SignUpNewUserActivity.class); } intent.putExtra("com.mycompany.myapp.SIGNIN_HINTS", credential); startActivity(intent); } else { Log.e(TAG, "Hint Read: NOT OK"); Toast.makeText(this, "Hint Read Failed", Toast.LENGTH_SHORT).show(); } } ... }
Điền trước biểu mẫu đăng nhập
Nếu người dùng có trong cơ sở dữ liệu người dùng và bạn đã bắt đầu đăng nhập vào ứng dụng
hoạt động của bạn, bạn có thể (không bắt buộc) kiểm tra xem đối tượng Credential
có chứa mã nhận dạng hay không
mã thông báo. Nếu vậy, bạn có thể đăng nhập cho người dùng bằng mã thông báo mã nhận dạng,
mà không yêu cầu người dùng nhập mật khẩu.
Nếu đối tượng Credential
không chứa mã thông báo mã nhận dạng (hoặc bạn không muốn sử dụng mã thông báo này)
mã thông báo ID), điền sẵn vào trường đăng nhập bằng các gợi ý mà bạn đã thêm vào
ý định.
public class SignInActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
Credential credential = intent.getParcelableExtra("com.mycompany.myapp.SIGNIN_HINTS");
// Pre-fill ID field
mUsernameView.setText(credential.getId());
...
}
...
}
Điền trước biểu mẫu đăng ký
Nếu người dùng không có trong cơ sở dữ liệu người dùng và bạn đã bắt đầu đăng ký ứng dụng hoạt động, điền sẵn vào các trường đăng ký bằng gợi ý đăng nhập mà bạn đã thêm vào ý định.
public class SignUpNewUserActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
Credential credential = intent.getParcelableExtra("com.mycompany.myapp.SIGNIN_HINTS");
// Pre-fill sign-up fields
mUsernameView.setText(credential.getId());
mDisplaynameView.setText(credential.getName()); // Might be null.
...
}
...
}
Nếu muốn, bạn cũng có thể kiểm tra xem đối tượng Credential
có chứa
Mã thông báo giá trị nhận dạng có
địa chỉ email đã xác minh. Nếu vậy, bạn có thể bỏ qua bước xác minh email của ứng dụng,
vì địa chỉ email đã được Google xác minh.