为什么 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 会通过弹出窗口提供某种有用的反馈,但它却提供了一个空白页面。
解决这个问题:
- 转到https://console.cloud.google.com/apis/dashboard
- 点击 OAuth 同意屏幕
- 向下滚动到 测试用户 部分
- 输入您想用来测试您的应用程序的测试用户的电子邮件地址(例如您自己的个人 gmail)
现在应用应该会正确显示确认页面。
总结
我有一个创建 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 会通过弹出窗口提供某种有用的反馈,但它却提供了一个空白页面。
解决这个问题:
- 转到https://console.cloud.google.com/apis/dashboard
- 点击 OAuth 同意屏幕
- 向下滚动到 测试用户 部分
- 输入您想用来测试您的应用程序的测试用户的电子邮件地址(例如您自己的个人 gmail)
现在应用应该会正确显示确认页面。