xamarin.android - 为什么我的 Google OAuth2 登录正常工作,而忽略了我的应用程序签名密钥库
问题描述
在我们的应用程序中,我们使用的是 Google Drive REST API。要进行身份验证,我们将 Xamarin.Auth 与以下配置一起使用
var authenticator = new OAuth2Authenticator(<our client ID>,
null,
"https://www.googleapis.com/auth/drive",
"https://accounts.google.com/o/oauth2/v2/auth",
<our redirect url>,
"https://www.googleapis.com/oauth2/v4/token",
null,
true);
登录显示使用
var loginPresenter = new OAuthLoginPresenter();
loginPresenter.Login(authenticator);
(这不是实际的代码,因为授权被封装在一个类中,并且authenticator和presenter被注入,但基本上这就是我们正在做的)。
这将在浏览器中打开一个登录表单并允许用户登录,从而导致表单使用 OAuth2 令牌回调我们的应用程序。一切都像魅力一样。
我们的客户端 ID 是使用我们的调试密钥库的哈希创建的。根据文档和其他问题(请参阅此处和此处),当应用程序使用不同的密钥库签名时,这应该在发布配置中停止工作。无论如何,使用我们的内部测试 AdHoc 密钥库对应用程序进行了签名后,登录表单仍然可以正常工作,没有任何问题。其实我不明白它应该怎么做。毕竟,我们所做的只是在系统浏览器控件中打开一个网站,因此我不明白该网站应该如何获取我们的应用程序哈希。
由于链接的问题缺乏细节,我看不出它们与我们的情况有何不同,但我不知何故假设 Google OAuth 做了一些黑魔法来确保哈希匹配。这对我们有用吗?我们能否期望它在上传到 Google Play 后继续工作,或者它是否存在停止工作的风险?
解决方案
推荐阅读
- android - 无法找到支持的表面信息 - CameraId:null (CameraX) on android things
- c++ - 如何使用 CTypes 将 wchar_t**(以空结尾的 UNICODE 字符串数组)返回给 Python 脚本
- android - 应用程序被杀死/关闭时接收推送通知的设备特定问题
- celery - 在 Django 处理的请求中使用 .apply_async() 或 .delay() 时,Celery 任务挂起,但在 shell 中调用时工作正常
- visualization - 有没有办法将 Apache 气流与 Superset 连接起来?
- powershell - 如何在不关闭 Powershell 控制台的情况下从 Powershell 模块函数返回非零退出代码?
- php - 带有两个键的 PHP 循环总和值
- android - java.lang.IndexOutOfBoundsException: Index: 2, Size: 2 in Spinner Item Selection
- python - 为什么while循环之后的语句并不总是被执行?
- javascript - 重新排序多列中的 html 元素(从一列到另一列)