As solicitações para recuperar credenciais do usuário podem falhar quando um usuário ainda não foi salvo ou quando um usuário ainda não se inscreveu no seu app. Nessas situações, use a API Credentials para recuperar dicas de login, como as o nome e o endereço de e-mail do usuário. Use estas dicas para preencher automaticamente o login do app e formulários de inscrição, acelerando o processo de integração do app.
No Android 6.0 (Marshmallow) e versões mais recentes, seu app não precisa solicitar qualquer permissão de dispositivo ou de execução para recuperar dicas de login com o API Credentials.
Antes de começar
Configure um projeto do Android Studio.
Recuperar dicas de login
Para recuperar as dicas de login, primeiro configure a caixa de diálogo do seletor de dicas da seguinte forma:
criar um objeto HintRequest
.
objeto. Em seguida, transmita o objeto HintRequest
para
CredentialsClient.getHintPickerIntent()
para gerar uma intent que solicita que o usuário escolha um endereço de e-mail. Por fim, inicie o
com 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);
}
O usuário precisa escolher um endereço de e-mail para usar.
Em seguida, no método onActivityResult()
da atividade, recupere as dicas do
pacote Credential.EXTRA_KEY
, verifique se o usuário está no banco de dados do usuário.
e inicie a atividade adequada com a dica de credenciais.
@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(); } } ... }
Preencher automaticamente o formulário de login
Se o usuário estiver no banco de dados de usuários e você tiver iniciado o login no app
atividade, é possível verificar (opcionalmente) se o objeto Credential
contém um ID
com base no token correto anterior. Em caso afirmativo, você pode fazer o login do usuário com o token de ID,
sem que o usuário precise digitar uma senha.
Se o objeto Credential
não tiver um token de ID (ou se você não quiser usar
o token de ID), preencha previamente os campos de login com as dicas que você adicionou ao
intenção.
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());
...
}
...
}
Preencher automaticamente o formulário de inscrição
Se o usuário não estiver no banco de dados de usuários e você tiver iniciado a inscrição no app preencha previamente os campos de inscrição com as dicas de login que você adicionou o 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.
...
}
...
}
Também é possível verificar se o objeto Credential
contém um
Token de ID que tem um
endereço de e-mail verificado. Nesse caso, pule
a etapa de verificação de e-mail do app.
porque o endereço de e-mail já foi verificado pelo Google.