Dan*_*roz 1 android google-play-services google-smartlockpasswords google-play-services-3.3.0 play-services-auth-base-license
我正在我的应用程序上实施谷歌智能锁,目前,我们只在应用程序端实施,一旦用户允许保存凭据,例如在重新安装时自动登录。但是,当我从 password.google.com 中删除密码时,或者当我在 Google 帐户没有为该应用程序存储凭据的设备上运行该应用程序时,库会显示一个对话框,建议其他网站和应用程序电子邮件。我需要禁用此行为,我只想建议凭据和电子邮件(如果它们属于我的应用程序)。
我正在使用以下代码请求凭据:
private void requestCredentials() {
CredentialRequest request = new CredentialRequest.Builder()
.setPasswordLoginSupported(true)
.setIdTokenRequested(true)
.build();
mProgressSmartLock.show();
credentialsClient.request(request).addOnCompleteListener(credentialsApiRequestCompleteListener());
}
Run Code Online (Sandbox Code Playgroud)
和听众:
public OnCompleteListener<CredentialRequestResponse> credentialsApiRequestCompleteListener(){
return new OnCompleteListener<CredentialRequestResponse>() {
@Override
public void onComplete(@NonNull Task<CredentialRequestResponse> task) {
// Successfully read the credential without any user interaction, this
// means there was only a single credential and the user has auto
// sign-in enabled.
mProgressSmartLock.dismiss();
if (task.isSuccessful()) {
processRetrievedCredential(task.getResult().getCredential());
return;
}
// This is most likely the case where the user has multiple saved
// credentials and needs to pick one. This requires showing UI to
// resolve the read request.
Exception e = task.getException();
if (e instanceof ResolvableApiException) {
ResolvableApiException rae = (ResolvableApiException) e;
resolveResult(rae, RC_READ);
return;
}
// This means only a hint is available
if (e instanceof ApiException) {
Crashlytics.logException(e);
}
}
};
}
Run Code Online (Sandbox Code Playgroud)
保存凭据:
private void saveCredentials(String email, String password) {
final Credential credential = new Credential.Builder(email)
.setPassword(password)
.build();
mProgress.show();
credentialsClient.save(credential).addOnCompleteListener(credentialsApiSaveCompleteListener());
}
Run Code Online (Sandbox Code Playgroud)
听众:
public OnCompleteListener<Void> credentialsApiSaveCompleteListener(){
return new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
mProgress.dismiss();
return;
}
Exception e = task.getException();
if (e instanceof ResolvableApiException) {
// The first time a credential is saved, the user is shown UI
// to confirm the action. This requires resolution.
ResolvableApiException rae = (ResolvableApiException) e;
resolveResult(rae, RC_SAVE);
} else {
// Save failure cannot be resolved.
mProgress.dismiss();
}
}
};
}
Run Code Online (Sandbox Code Playgroud)
为避免出现此对话框(列出所有电子邮件地址以帮助填写表单,即使没有保存密码),如果任务getStatusCode()返回,请不要解析SIGN_IN_REQUIRED。
抱歉,此详细信息在最近的文档更改中丢失了,感谢您的报告。将尽快更新,抱歉造成混乱。
| 归档时间: |
|
| 查看次数: |
1073 次 |
| 最近记录: |