Kullanıcı kimlik bilgilerini alma istekleri, kullanıcı henüz kaydetmediğinde başarısız olabilir veya kullanıcı henüz uygulamanıza kaydolmadığında kimlik bilgileri gösterilir. Bu durumlarda, kullanıcı adı ve e-posta adresi. Uygulamanızın oturum açma bilgilerini önceden doldurmak için bu ipuçlarını kullanın ve kayıt formları oluşturarak uygulamanızın ilk katılım sürecini hızlandırabilirsiniz.
Android 6.0 (Marshmallow) ve sonraki sürümlerde uygulamanızın istekte bulunması gerekmez oturum açma ipuçlarını almak için her cihazda veya çalışma zamanında istenen izinleri Kimlik Bilgileri API'si.
Başlamadan önce
Bir Android Studio projesi yapılandırın.
Oturum açma ipuçlarını alma
Oturum açma ipuçlarını almak için önce ipucu seçici iletişim kutusunu
HintRequest
oluşturuluyor
nesnesini tanımlayın. Ardından HintRequest
nesnesini
CredentialsClient.getHintPickerIntent()
kullanıcının e-posta adresi seçmesini isteme amacıyla çalışır. Son olarak,
startIntentSenderForResult()
ile niyetinizi gösterin.
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);
}
Kullanıcıdan kullanılacak e-posta adresini seçmesi istenir.
Ardından etkinliğin onActivityResult()
yönteminde,
Credential.EXTRA_KEY
paketi, kullanıcının kullanıcı veritabanınızda olup olmadığını kontrol edin,
ve kimlik bilgileri ipucuyla uygun işlemi başlatın.
@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(); } } ... }
Oturum açma formunu önceden doldurma
Kullanıcı, kullanıcı veritabanınızdaysa ve uygulamanızın oturum açma işlemini başlattıysanız
etkinliği varsa (isteğe bağlı olarak) Credential
nesnesinin bir kimlik içerip içermediğini kontrol edebilirsiniz
jeton. Bu durumda, kimlik jetonuyla kullanıcının oturum açmasını sağlayabilirsiniz.
Böylece kullanıcının şifre girmesi gerekmez.
Credential
nesnesi kimlik jetonu içermiyorsa (veya
kimlik jetonu olarak) oturum açma alanlarını,
isteyebilirsiniz.
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());
...
}
...
}
Kayıt formunu önceden doldurun
Kullanıcı, kullanıcı veritabanınızda değilse ve uygulamanızın kaydını başlattıysanız etkinliği için eklediğiniz oturum açma ipuçlarıyla kayıt alanlarını önceden doldurun. düşünmelisiniz.
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.
...
}
...
}
İsteğe bağlı olarak, Credential
nesnesinin
Şuna sahip olan kimlik jetonu:
doğrulanmış e-posta adresidir. Öyleyse uygulamanızın e-posta doğrulaması adımını atlayabilirsiniz.
çünkü e-posta adresi zaten Google tarafından doğrulanıyor.