1

我知道在 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文档中,没有办法解决这个问题。在 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#

4

2 回答 2

3

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

这是由于发布 Google Play 服务 APK 版本与其对应的客户端库之间的窗口(此处的结构概述)。

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

更新 1:对应的 Google Play Services 客户端库已经发布。概述文档的“以 Android O 及更高版本为目标”部分对此有更多详细信息。

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

于 2017-10-30T16:32:12.057 回答
1

AuthCredentialsOptions.Builder 的公共 SDK 中缺少该方法,我们对其进行了修复(请参阅接受的答案)

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

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

于 2018-01-25T07:00:51.867 回答