Permintaan untuk mengambil kredensial pengguna dapat gagal jika pengguna belum menyimpan kredensial, atau jika pengguna belum mendaftar ke aplikasi Anda. Di ini, gunakan Credentials API untuk mengambil petunjuk login, seperti nama pengguna dan alamat email Anda. Gunakan petunjuk ini untuk mengisi otomatis info login aplikasi dan formulir pendaftaran, sehingga mempercepat proses orientasi aplikasi Anda.
Di Android 6.0 (Marshmallow) dan yang lebih baru, aplikasi tidak perlu meminta izin akses perangkat atau runtime untuk mengambil petunjuk login dengan API Kredensial.
Sebelum memulai
Mengonfigurasi project Android Studio.
Mengambil petunjuk login
Untuk mengambil petunjuk login, konfigurasikan dialog pemilih petunjuk terlebih dahulu dengan
membuat HintRequest
. Lalu, teruskan objek HintRequest
ke
CredentialsClient.getHintPickerIntent()
untuk mendapatkan intent meminta pengguna memilih alamat email. Terakhir, mulai
dengan 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);
}
Pengguna akan diminta untuk memilih alamat email yang akan digunakan.
Kemudian, dalam metode onActivityResult()
aktivitas, ambil petunjuk dari
paket Credential.EXTRA_KEY
, periksa apakah pengguna ada dalam database pengguna Anda,
dan memulai aktivitas yang sesuai dengan petunjuk kredensial.
@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(); } } ... }
Mengisi formulir login terlebih dahulu
Jika pengguna berada dalam database pengguna dan Anda memulai proses login aplikasi
Anda dapat (secara opsional) memeriksa apakah objek Credential
berisi ID
sebelumnya yang benar. Jika demikian, Anda dapat membuat pengguna login dengan token ID,
tanpa mengharuskan pengguna
untuk mengetik {i>password<i}.
Jika objek Credential
tidak berisi token ID (atau Anda tidak ingin menggunakannya
token ID), isi kolom login dengan petunjuk yang telah ditambahkan ke
intent.
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());
...
}
...
}
Isi formulir pendaftaran terlebih dahulu
Jika pengguna tidak berada dalam database pengguna dan Anda memulai pendaftaran aplikasi aktivitas Anda, maka isi bidang pendaftaran terlebih dahulu dengan petunjuk masuk yang Anda tambahkan intent.
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.
...
}
...
}
Secara opsional, Anda juga dapat memeriksa apakah objek Credential
berisi elemen
token ID yang memiliki
yang telah diverifikasi. Jika demikian, Anda dapat melewati
langkah verifikasi email untuk aplikasi,
karena alamat email telah diverifikasi oleh Google.