Żądania pobrania danych logowania użytkownika mogą się nie powieść, jeśli użytkownik nie został jeszcze zapisany dane logowania lub gdy użytkownik nie zarejestrował się jeszcze w aplikacji. W tych należy użyć interfejsu Credentials API do pobrania wskazówek logowania, takich jak nazwa i adres e-mail użytkownika. Skorzystaj z tych wskazówek, aby wstępnie wypełnić dane logowania w aplikacji i formularze rejestracyjne, co przyspieszy proces wdrażania aplikacji.
W Androidzie 6.0 (Marshmallow) lub nowszym aplikacja nie musi prosić o zgodę dowolne uprawnienia urządzenia lub działania w czasie działania, aby pobrać wskazówki logowania za pomocą Credentials API.
Zanim zaczniesz
Skonfiguruj projekt Android Studio.
Pobierz wskazówki dotyczące logowania
Aby pobrać wskazówki dotyczące logowania, najpierw skonfiguruj okno selektora podpowiedzi przez
tworzenie HintRequest
obiektu. Następnie przekaż obiekt HintRequest
do
CredentialsClient.getHintPickerIntent()
.
aby skłonić użytkownika do wybrania adresu e-mail. Na koniec uruchom
z intencjami z 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);
}
Użytkownik zostanie poproszony o wybranie adresu e-mail.
Następnie w metodzie onActivityResult()
aktywności pobierz wskazówki z metody
Credential.EXTRA_KEY
paczka, sprawdź, czy użytkownik jest w bazie danych użytkowników,
i rozpocznij odpowiednie działanie
z podpowiedzią na temat danych logowania.
@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(); } } ... }
Wstępnie wypełnij formularz logowania
Jeśli użytkownik znajduje się w bazie danych użytkowników i rozpoczęto logowanie w aplikacji
aktywności, możesz (opcjonalnie) sprawdzić, czy obiekt Credential
zawiera identyfikator
token. Jeśli tak, możesz zalogować użytkownika za pomocą tokena identyfikatora,
bez konieczności wpisywania hasła.
Jeśli obiekt Credential
nie zawiera tokena identyfikatora (lub nie chcesz używać
token identyfikatora), wypełnij pola logowania zgodnie ze wskazówkami dodanymi na stronie
intencji.
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());
...
}
...
}
Wypełnij wstępnie formularz rejestracji
Jeśli użytkownika nie ma w bazie danych użytkowników, a rejestracja aplikacji została rozpoczęta wypełnij pola rejestracji, korzystając z dodanych do nas wskazówek intencja.
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.
...
}
...
}
Opcjonalnie możesz też sprawdzić, czy obiekt Credential
zawiera
Token identyfikatora, który ma
zweryfikowany adres e-mail. Jeśli tak, możesz pominąć etap weryfikacji adresu e-mail w aplikacji.
ponieważ adres został już zweryfikowany przez Google.