没有使用Google Play服务集成的oAuth Google的WebView替代方案。

12
我们有自定义设备,运行在Android操作系统上,但没有集成Google Play服务。
我们使用Webview Oauth2.0身份验证进行Google登录。根据文档,该方法已被弃用。
我看到有一种方式可以使用https://developers.google.com/identity/sign-in/android/,但这似乎需要Gradle集成Play服务。
那么哪种方法可以用于Google身份验证?
我找到了以下2个选项,但它们是否对我的情况有帮助?
1. https://firebase.google.com/docs/auth/android/start/
2. https://developers.google.com/api-client-library/java/google-api-java-client/oauth2

哪种方案最适合我的需求?
请帮帮忙。
敬礼,
Shraddha

1个回答

12

的确,很久以前谷歌就已经禁止了通过应用程序内部的 WebView 登录其服务的可能性。原因是谷歌不信任外部应用提供者的连接安全性,它强制外部应用提供者使用谷歌的登录方法来访问其服务。

来源:现代化Native应用中的OAuth交互,以提高可用性和安全性

确实,您已经找到了使用谷歌服务的正确方法,但是FirebaseGoogle Sign In有一个缺点,使它们无法被您使用,即两者都需要Google Play ServicesFirebase需要它们Google Sign in需要它们。因此,在没有Google Play Services的设备上没有官方使用这两个服务的方式。

还有另一种方式:Chrome Custom Tabs。然而,它们需要在设备上安装Chrome。自从很久以前也使用了Google Play Services。此外,Chrome Custom Tabs是在Chrome已经合并Google Play Services之后推出的。

不过,有一个技巧。将应用程序内部的WebView User Agent声明为Chrome。这里是文档。正如在该页面底部所示,您可以从WebView用户代理字符串中删除以下字符串:

  • 适用于奇巧魅族设备的Version/_X.X_
  • 在安卓5.0及以上版本设备上,可以使用标签。

然而,我不建议采用这种方法,并且如果有可能,请遵循Google政策。

希望这个解释足够清楚。

编辑: 根据下面的评论,Goole Api Java Client 不需要 Google Play Services,所以这可能是一个选择。


你好,非常感谢您的时间。根据SO上的答案:https://dev59.com/r2Eh5IYBdhLWcg3wrVHW Google APIs Client Library for Java是一个通用库,可从所有应用程序类型(Web、已安装或Android应用程序)访问Google服务。因此,它可以是一种通用方式,无需安装Play服务。正确吗? - Shraddha Shravagi
1
好的。根据这部分Google Api Java Client不需要Google Play服务。所以你可以尝试一下。我没有注意到,_Google Api Java Client_和_Google Sign-In_是两个不同的东西。 - R. Zagórski
4
谢谢。但是我们如何获取令牌并授权用户呢? - Shraddha Shravagi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接