c# - 为什么 GoogleApiClient.Build.EnableAutoManage 软锁定我的应用程序?
问题描述
概括
我有一个 Xamarin 应用程序,它创建一个 GoogleApiClient 并调用 EnableAutoManage。当我的应用程序运行时,系统会询问我要使用哪个用户帐户,然后应用程序会挂在带有 Google 主题微调器的空白弹出页面上。为什么会这样?
细节
我一直在关注这个视频,它展示了如何设置应用程序来读取 Google Fit 数据。请注意时间戳 - 这是显示代码的地方。
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 绑定:
解决方案
发生这种情况的原因是我的谷歌帐户尚未添加为测试用户。人们可能期望谷歌会通过弹出窗口提供某种有用的反馈,但它提供了一个空白页面。
要解决这个问题:
- 转到https://console.cloud.google.com/apis/dashboard
- 单击 OAuth 同意屏幕
- 向下滚动到测试用户部分
- 输入您想用来测试您的应用程序的测试用户的电子邮件地址(例如您自己的个人 gmail)
现在应用程序应该正确显示一个确认页面。
推荐阅读
- kubernetes - 在 Grafana 中创建自定义仪表板时出现问题(数据源是 Prometheus)
- elixir - 如何使用 AWS SNS 发送短信 usibng ExAws
- parsing - 一个值中有多个点的 SVG 路径数据
- python - 如何让 discord.py bot 添加 scorpius 符号以及 mod 角色?
- pandas - 打印和存储 t-test 循环的结果
- r - R data.frame colnames 取决于赋值运算符
- c# - 在 mvc 中用网格视图绑定 2 个 sql 表(数据库优先)
- angular - 带有 keydown.space 和 keydown.tab 的角三元条件
- javascript - 从 URL 获取 React-Native JSON
- ios - 如何在 Swift4 中将 UITableView 标签更改为多种颜色