Le richieste di recupero delle credenziali utente possono non riuscire se un utente non ha ancora salvato credenziali o quando un utente non si è ancora registrato alla tua app. In queste in situazioni simili, utilizza l'API Credentials per recuperare i suggerimenti di accesso, come il nome e l'indirizzo email dell'utente. Usa questi suggerimenti per precompilare l'accesso alla tua app e moduli di registrazione, velocizzando le procedure di onboarding della tua app.
Su Android 6.0 (Marshmallow) e versioni successive, l'app non deve richiedere eventuali autorizzazioni del dispositivo o di runtime per recuperare i suggerimenti di accesso con API Credentials.
Prima di iniziare
Configura un progetto Android Studio.
Recupera i suggerimenti di accesso
Per recuperare i suggerimenti di accesso, configura innanzitutto la finestra di dialogo del selettore di suggerimenti
la creazione di una HintRequest
. Quindi, passa l'oggetto HintRequest
a
CredentialsClient.getHintPickerIntent()
per avere l'intenzione di chiedere all'utente di scegliere un indirizzo email. Infine, avvia la
intent con 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);
}
All'utente viene chiesto di scegliere un indirizzo email da utilizzare.
Poi, nel metodo onActivityResult()
dell'attività, recupera i suggerimenti dalla
lotto Credential.EXTRA_KEY
, controlla se l'utente si trova nel database utenti
e avviare l'attività appropriata con il suggerimento credenziali.
@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(); } } ... }
Precompila il modulo di accesso
Se l'utente si trova nel tuo database utenti e hai avviato l'accesso alla tua app
puoi controllare (facoltativamente) se l'oggetto Credential
contiene un ID
di accesso. In questo caso, puoi accedere all'utente con il token ID,
senza richiedere all'utente di digitare una password.
Se l'oggetto Credential
non contiene un token ID (o non vuoi utilizzare
il token ID), precompila i campi di accesso con i suggerimenti che hai aggiunto
l'intento.
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());
...
}
...
}
Precompila il modulo di registrazione
Se l'utente non è nel tuo database utenti e hai avviato la registrazione dell'app attività, precompila i campi di registrazione con i suggerimenti di accesso che hai aggiunto l'intento.
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.
...
}
...
}
Facoltativamente, puoi anche verificare se l'oggetto Credential
contiene un oggetto
token ID con un
all'indirizzo email verificato. In tal caso, puoi saltare il passaggio di verifica email
dell'app,
poiché l'indirizzo email è già stato verificato da Google.