Nutzern Anmeldehinweise zur Verfügung stellen

<ph type="x-smartling-placeholder">

Anfragen zum Abrufen von Nutzeranmeldedaten können fehlschlagen, wenn ein Nutzer noch nicht gespeichert wurde. oder Nutzer, die sich noch nicht bei Ihrer App registriert haben. In diesen können Sie mit der Credentials API Anmeldehinweise abrufen, z. B. Name und E-Mail-Adresse des Nutzers. Verwende diese Hinweise, um die Anmeldedaten für deine App vorab auszufüllen und Anmeldeformulare, um den Onboardingprozess Ihrer App zu beschleunigen.

Unter Android 6.0 (Marshmallow) und höher muss Ihre App keine Geräte- oder Laufzeitberechtigungen, um Anmeldehinweise mit dem Credentials API

Hinweis

Konfigurieren Sie ein Android Studio-Projekt.

Anmeldehinweise abrufen

Konfigurieren Sie zuerst das Dialogfeld für die Hinweisauswahl, indem Sie HintRequest wird erstellt -Objekt enthält. Übergeben Sie dann das HintRequest-Objekt an CredentialsClient.getHintPickerIntent() um den Nutzer zur Auswahl einer E-Mail-Adresse aufzufordern. Beginnen Sie abschließend Intent mit 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);
}

Auswahl von Smart Lock-Anmeldehinweisen

Der Nutzer wird aufgefordert, eine E-Mail-Adresse auszuwählen.

Rufen Sie dann in der Methode onActivityResult() der Aktivität die Hinweise aus der Credential.EXTRA_KEY Paket enthält, prüfen Sie, ob sich der Nutzer in Ihrer Nutzerdatenbank befindet. und starten Sie mit dem Hinweis für die Anmeldedaten die entsprechende Aktivität.

@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();
        }
    }

    ...

}

Anmeldeformular vorab ausfüllen

Wenn sich der Nutzer in Ihrer Nutzerdatenbank befindet und Sie die Anmeldung Ihrer App gestartet haben Aktivität können Sie (optional) prüfen, ob das Credential-Objekt eine ID enthält. Token. In diesem Fall können Sie sich mit dem ID-Token anmelden. ohne dass der Nutzer ein Passwort eingeben muss.

Wenn das Credential-Objekt kein ID-Token enthält (oder wenn Sie ID-Token), füllen Sie die Anmeldefelder mit den Hinweisen aus, die Sie die Nutzerabsicht verstehen.

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());

        ...
    }

    ...
}

Anmeldeformular vorab ausfüllen

Wenn sich der Nutzer nicht in Ihrer Nutzerdatenbank befindet und Sie mit der Registrierung Ihrer App begonnen haben Aktivität beginnen, füllen Sie die Anmeldefelder mit den Anmeldehinweisen aus, die Sie zu die Absicht.

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.

        ...
    }

    ...
}

Optional können Sie auch prüfen, ob das Credential-Objekt ein ID-Token mit dem bestätigte E-Mail-Adresse. In diesem Fall können Sie den Schritt zur E-Mail-Bestätigung Ihrer Anwendung überspringen. da die E-Mail-Adresse bereits von Google verifiziert wurde.