为什么 GoogleApiClient.Build.EnableAutoManage 软锁定我的应用程序?

Why does GoogleApiClient.Build.EnableAutoManage softlock my application?

总结

我有一个创建 GoogleApiClient 并调用 EnableAutoManage 的 Xamarin 应用程序。当我的应用程序 运行s 时,系统询问我要使用哪个用户帐户,然后该应用程序挂在一个带有 Google 主题微调器的空白弹出页面上。为什么会这样?

详情

我一直在关注这个视频,它展示了如何设置应用程序来读取 Google 健身数据。注意时间戳 - 这是显示代码的地方。

https://youtu.be/j_zsNxMI6jI?t=2172

我已按照此处的示例进行操作,并将问题缩小到这段代码:

// In my MainActivity's OnCreate:
try
{
    int defaultClientId = 0;
    googleApiClient = new GoogleApiClient.Builder(this)
        .AddApi(FitnessClass.HISTORY_API)
        .AddApi(FitnessClass.RECORDING_API)
        .AddScope(FitnessClass.ScopeActivityRead)
        .EnableAutoManage(this, defaultClientId, 
        result => 
        {
            int m = 3; // Breakpoint here is never hit
        })
        .Build();
}
catch (Exception e)
{
    int m = 3; // Breakpoint here is never hit either
}

如果我 运行 我的应用程序(在模拟器和物理硬件上都试过),我首先会被问到要使用哪个帐户。

选择帐户后,会出现另一个弹出窗口,顶部有一个 Google 主题(在红色、黄色、绿色和蓝色之间切换)的微调器。弹出窗口保留在屏幕上,微调器无限期地动画。

如上面的代码所述,没有引发异常,并且在 EnableAutoManage 委托中没有返回结果。为什么会这样?

更新 1

如果我删除以下行,应用程序将不再无限期地显示微调器:

.AddScope(FitnessClass.ScopeActivityRead)

添加这行代码似乎是带有微调器的弹出窗口的原因。

更新 2

我想我会尝试使用 GoogleApi 而不是 GoogleApiClient 的“新”方法,如此处所述:

https://android-developers.googleblog.com/2017/11/moving-past-googleapiclient_21.html

不幸的是,似乎还没有 Xamarin 绑定:

Xamarin Android: Cannot resolve GoogleSignIn and GoogleSignInClient

发生这种情况的原因是我的 google 帐户尚未添加为测试用户。人们可能期望 Google 会通过弹出窗口提供某种有用的反馈,但它却提供了一个空白页面。

解决这个问题:

  1. 转到https://console.cloud.google.com/apis/dashboard
  2. 点击 OAuth 同意屏幕
  3. 向下滚动到 测试用户 部分
  4. 输入您想用来测试您的应用程序的测试用户的电子邮件地址(例如您自己的个人 gmail)

现在应用应该会正确显示确认页面。