首页 > 解决方案 > 为什么我的 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 后继续工作,或者它是否存在停止工作的风险?

标签: xamarin.androidgoogle-oauthxamarin.auth

解决方案


推荐阅读