测试时,Google智能锁保存凭据的对话框未出现。

11

我正在尝试将用户的Facebook凭据保存到Google Smart Lock中,但我在测试时遇到了困难。我曾经能够显示提示以进行保存,但在我进入我的已保存凭据(passwords.google.com)并删除已保存的凭据后,该提示不再出现!

我进入Google设置,并确认从“不保存”部分中删除了该应用程序,但它仍未出现。当我调用Auth.CredentialsApi.save()时,它返回一个“null”解决方案和消息“当前应用程序被列入黑名单”。


感谢发布这篇文章,Sara,很抱歉我没有早点看到它。我同意从所有帐户中删除应用程序的“永不保存”列表是令人困惑的:如果用户启用保存,则更改可能自动适用于所有帐户。将提交请求以更新此功能。Steven(智能锁产品经理) - Steven
4个回答

14
请确认API返回的错误信息是否为"The current app is blacklisted",当保存对话框在过去的某个时间点上选择了"Never"时,将会触发此错误(详见已接受答案中的细节:需要检查设备上所有帐户)。
一般而言,如果在测试时没有看到保存对话框,请检查以下内容:
请尝试使用真实设备(Android 4+),而非模拟器,并确保设备运行最新版本的Google Play服务(8+)并具有活动的互联网连接。验证设备至少有一个Google账户,并且该账户处于良好状态(不需要重新输入密码并符合任何公司政策要求)。例如,检查该账户的电子邮件推送通知是否成功接收到设备上。在Google设置应用程序中的“智能锁定密码”(适用于Marshmallow之前的版本)或“设置> Google>智能锁定密码”(Marshmallow)中,请确保至少一次设备上的帐户显示为启用了智能锁定密码功能,并且未被口令加密禁用,请参见相关问题。在相同的“智能锁定密码”设置活动中,还应检查该应用程序是否未出现在设备上任何帐户的“永不保存”列表中(如已接受的答案中所述)。设置活动UI顶部有一个帐户选择器下拉菜单。检查Auth.CredentialsApi.save()回调是否被调用,并且CredentialRequestResultgetStatus().getStatusCode()RESOLUTION_REQUIRED,并且您已调用startResolutionForResult()。请注意示例应用程序。请注意,在您调用onActivityResult()之前,启动startResolutionForResult()的Activity不能finish()。还请注意,使用与设备上Google帐户匹配的电子邮件标识符和代替密码设置的帐户类型调用Auth.CredentialsApi.save(),保存将成功而无需解决方案。类似地,对具有匹配标识符的现有密码凭据进行更新。请检查passwords.google.com以查看当前保存了哪些凭据。
如果这些方法都不起作用,尝试在设备上添加一个新的Google帐户,并尝试另一个具有智能锁集成的应用程序,例如在您的设备上创建和保存基于电子邮件的NYTimes应用程序账户,并确定它是设备/账户特定问题还是您的应用程序实现问题,并随时留下详细评论。要了解如何在应用程序中测试智能锁API集成的完整指南,请查看this answer

1
请注意,在调用startResolutionForResult()方法的Activity中,在对话框显示并且用户完成交互之前,该Activity不能被finish()。如果要取消此解决方案以便在下一个/上一个Activity中不显示对话框,应该如何操作? - Langusten Gustel

12

我找到了一个解决方案,想要发布出来,以便其他人也遇到这个问题时可以参考。问题是我在设备上有多个 Google 帐户,我需要从每个帐户的“永不保存”列表中删除我的应用程序。


你好, 我看到您在应用程序中存储了Facebook凭据。您能帮忙回答一下这个帖子吗? https://dev59.com/J5Lea4cB1Zd3GeqP0lLv - Pauland
谢谢你的提示。我的做法是使用另一个账户登录我的设备,然后保存密码。之后,我切换回我的主账户,现在提示对话框就会显示出来。看起来 Google 凭据 API 并不能很好地处理这种情况。 - Cheok Yan Cheng

6
尝试以下操作:
进入手机设置->Google->管理您的帐户->安全选项卡->向下滚动并选择密码管理器->点击右上方的设置图标。
您将看到拒绝的应用程序和网站列表,请将您的应用程序从该列表中移除。
此方法可帮助解决以下错误:
保存失败。16:当前应用程序的保存提示已禁用。要恢复,请从此设备上所有帐户的智能锁定密码设置中删除此应用程序的“永不保存”列表。

0

当我尝试登录时,遇到了同样的问题,即提示对话框没有弹出,而onActivityResult也没有被触发。为了解决这个问题,我从清单中删除了android:noHistory = "true"。这就足够了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接