我使用我的服务中的 AccountManager.getAuthToken 来访问 Googledocs 和电子表格 API。
由于我是从后台执行此操作并且不想打扰 user ,因此我允许 accountManager 在需要用户交互时发出通知(使用参数 boolean notifyAuthFailure)。
正如我所料,CallBack 是用 AccounManagerFuture 调用的,在这种情况下它解析为 Bundle with KEY_INTENT 字段。
“在这种情况下,您可能需要等到用户响应,这可能需要数小时或数天甚至永远。当用户确实响应并提供新密码时,帐户管理员将广播 LOGIN_ACCOUNTS_CHANGED_ACTION Intent,应用程序可以使用它来尝试再次”
当事情只是密码错误时,它运作良好。但是我遇到了一个问题,AccountAuthenticator 在运行时请求许可,并且意图(从通知栏)启动 GrantCredentialsPermissionActivity,在用户按下按钮(允许或拒绝)后不允许我知道用户已经响应。
问题是如何知道与用户的交互何时完成并再次尝试获取 AuthToken。
我无法从 GrantCredentialsPermissionActivity 获得 onActivityResult,因为我从 NotificationBar 启动它(不是从我的其他活动,因为我在尝试获取令牌时使用服务)
我不能事先在清单中指定权限,因为据我了解,这是一些由谷歌身份验证器定义的客户权限。
当用户在关闭 GrantCredentialsPermissionActivity 后在运行时批准/拒绝请求的应用程序权限时,它似乎没有广播任何意图。谢谢你。