【问题标题】:Google Smart Lock save dialog inaccessible in Android OreoAndroid Oreo 中无法访问 Google Smart Lock 保存对话框
【发布时间】:2017-10-26 17:53:49
【问题描述】:

我知道在 8.0 中,首选自动填充,但我想强制使用 Google Smart Lock 保存对话框。实施时出现此错误:

{Status{statusCode=The Credentials API's save confirmation dialog has been disabled to avoid conflicts with the Android Autofill feature. This choice may be overridden via AuthCredentialsOptions.Builder.forceEnableSaveDialog()., resolution=null}}

但在 Android docs 中,没有这种方法。在 Google 搜索中或在文档中的搜索中找不到这个 forceEnableSaveDialog() 方法。

有谁知道如何在 8.0 设备上强制执行此对话框?我希望我的应用在不同版本中的行为保持一致。

SaveCredentials 代码片段:

mCredentialsApiClient = new GoogleApiClient.Builder(Xamarin.Forms.Forms.Context)
                                                                       .AddConnectionCallbacks((obj) =>
                                                                       {
                                                                           var credendial = new Credential.Builder(userName).SetPassword(password).Build();

                                                                           Auth.CredentialsApi.Save(mCredentialsApiClient, credendial).SetResultCallback(new ResultCallback<IResult>((obj2) =>
                                                                           {
                                                                               Print("Saved");
                                                                                if (obj2.Status.IsSuccess)
                                                                                {
                                                                                    Print("Credentails successfully saved with Google Smart Lock");
                                                                                }
                                                                                else if (obj2.Status.StatusCode == CommonStatusCodes.ResolutionRequired)
                                                                                {  
                                                                                    obj2.Status.StartResolutionForResult(CrossCurrentActivity.Current.Activity, obj2.Status.StatusCode);
                                                                                }
                                                                           }));
                                                                       })
                                                                       .AddOnConnectionFailedListener(NotConnected)
                                                                       .AddApi(Auth.CREDENTIALS_API)
                                                                       .Build();
                            mCredentialsApiClient.Connect(); 

这是 Xamarin 中的 Android。相同的方法和所有内容,只使用 C#

【问题讨论】:

  • 你能告诉我你目前拥有的代码吗?
  • 我为我保存的位置添加了一个 sn-p 代码。返回的 obj2.Status 是这条消息的来源

标签: c# google-api xamarin.android android-8.0-oreo google-smartlockpasswords


【解决方案1】:

“...没有办法解决这个问题。在 Google 搜索或文档中的搜索中,我找不到这个 forceEnableSaveDialog() 方法。”

这是由于 Google Play 服务 APK 版本与其对应的客户端库发布之间的时间间隔(结构概览here)。

在相应的客户端版本中,AuthCredentialOptions.forceEnableSaveDialog() 将与涵盖其使用的文档一起提供。一旦有问题,我会更新这个问题,但你也可以观看发行说明here

更新 1: 相应的 Google Play 服务客户端库已发布。 overview documentation 的“定位 Android O 及更高版本”部分对此有更多详细信息。

更新 2: 在最新版本(版本 11.8.0)中,AuthCredentialOptions 已被弃用,取而代之的是新的 CredentialOptions

【讨论】:

  • AuthCredentialOptions.Builder 对象缺少 build() 方法。
【解决方案2】:

AuthCredentialsOptions.Builder 的公共 SDK 中缺少该方法,我们已修复它(请参阅已接受的答案)

但更重要的说明:使用 Google 自动填充保存对话框将密码存储到同一个 Smart Lock 数据库,因此如果显示自动填充对话框,那么您无需担心使用 API强制显示另一个对话框(事实上,如果您通过 API 强制显示对话框,请确保禁止自动填充一个...用户不应看到两个对话框)。通过任一对话框保存的数据将可用于 Smart Lock 自动登录(反之亦然用于自动填充),并且数据通过 Google 帐户与 Chrome 同步(自动填充和 API)。

由于对话框将数据存储到同一个位置,因此我们选择在用户使用 Google 作为其自动填充管理器时显示使用 Google 自动填充的对话框,因为它可以在 Oreo 设备上的所有应用中提供一致的体验。致力于改进错误消息、文档和品牌以澄清这一点。很抱歉造成混乱。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    • 2016-07-20
    • 2018-07-18
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多