注意我将问题/问题发布到google sample github repo,https://github.com/googlesamples/android-play-safetynet/issues/12。但是,我还没有得到任何回应。
使用的库版本: com.google.android.gms:play-services-safetynet:11.4.2
我正在使用安全网验证码 API。一切都按预期工作,都被检测到: - 成功时(使用真实设备进行测试且未检测到危害) - 一个失败侦听器(使用 Android 模拟器进行测试并验证步骤时)
但是,这里的步骤会产生未检测到成功和失败的问题: - 在 Android 模拟器中运行应用程序 - 使用验证码点击 SafetyNet 验证 - 由于 android 模拟器标记为可能的危害,它将显示验证图像 - 单击侦听图标听话 - 点击对话框区域外的屏幕,验证对话框将关闭
预期:应该触发 addOnFailureListener,因为用户在检测为机器人时没有响应验证步骤
实际:未检测到 OnSuccessListener 和 addOnFailureListener
示例代码
SafetyNet.getClient(this).verifyWithRecaptcha(YOUR_API_SITE_KEY)
.addOnSuccessListener((Executor) this,
new OnSuccessListener<SafetyNetApi.RecaptchaTokenResponse>() {
@Override
public void onSuccess(SafetyNetApi.RecaptchaTokenResponse response) {
// Indicates communication with reCAPTCHA service was
// successful.
String userResponseToken = response.getTokenResult();
if (!userResponseToken.isEmpty()) {
// Validate the user response token using the
// reCAPTCHA siteverify API.
}
}
})
.addOnFailureListener((Executor) this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
if (e instanceof ApiException) {
// An error occurred when communicating with the
// reCAPTCHA service. Refer to the status code to
// handle the error appropriately.
ApiException apiException = (ApiException) e;
int statusCode = apiException.getStatusCode();
Log.d(TAG, "Error: " + CommonStatusCodes
.getStatusCodeString(statusCode));
} else {
// A different, unknown type of error occurred.
Log.d(TAG, "Error: " + e.getMessage());
}
}
});
问题:
- 如果用户关闭验证对话框,那么 SafetyNet 不会通知侦听器,这是预期的设计吗?
- SafetyNet 是否还有其他侦听器可以处理上述问题的情况?或其他从 SafetyNet SDK 处理这种情况的解决方案?
谢谢