사용자가 아직 저장하지 않은 경우 사용자 인증 정보 검색 요청이 실패할 수 있습니다. 아직 가입하지 않은 사용자를 나타냅니다. 이러한 Credentials API를 사용하여 사용자 이름 및 이메일 주소입니다. 이 힌트를 사용하여 앱의 로그인 정보를 미리 입력하세요. 앱 온보딩 프로세스를 단축할 수 있습니다.
Android 6.0 (Marshmallow) 이상에서는 앱이 모든 기기 또는 런타임 권한을 사용하여 Credentials API를 사용할 수 있습니다.
시작하기 전에
로그인 힌트 가져오기
로그인 힌트를 검색하려면 먼저
HintRequest
만들기
객체를 지정합니다. 그런 다음 HintRequest
객체를
CredentialsClient.getHintPickerIntent()
사용자에게 이메일 주소를 선택하라는 메시지를 표시하는 인텐트를 가져옵니다. 마지막으로
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);
}
사용할 이메일 주소를 선택하라는 메시지가 표시됩니다.
그런 다음 활동의 onActivityResult()
메서드에서
Credential.EXTRA_KEY
parcel에서 사용자가 사용자 데이터베이스에 있는지 확인합니다.
자격 증명 힌트를 사용하여 적절한 활동을 시작합니다.
@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(); } } ... }
로그인 양식 미리 작성하기
사용자가 사용자 데이터베이스에 있고 앱의 로그인을 시작한 경우
선택적으로 Credential
객체에 ID가 포함되어 있는지 확인할 수 있습니다.
토큰입니다. 이 경우 ID 토큰으로 사용자를 로그인할 수 있습니다.
비밀번호를 입력하지 않아도 됩니다.
Credential
객체에 ID 토큰이 포함되어 있지 않거나 이 토큰을 사용하지 않으려는 경우
ID 토큰)에 추가한 힌트를 로그인 필드에 미리 채워 넣으세요.
인텐트를 지정할 수 있습니다.
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());
...
}
...
}
가입 양식 미리 작성하기
사용자가 사용자 데이터베이스에 없으며 앱 가입을 시작한 경우 활동에서 내가 추가한 로그인 힌트를 가입 필드에 미리 채워 넣으세요. 있습니다.
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.
...
}
...
}
필요한 경우 Credential
객체에
ID 토큰
이메일 주소를 확인합니다. 이 경우 앱의 이메일 인증 단계를 건너뛰어도 됩니다.
이미 Google에서 이메일 주소를 인증했기 때문입니다.