在副标题下的这个页面(https://developers.google.com/identity/sign-in/android/start-integrating)上,“获取后端服务器的OAuth 2.0客户端ID ”,它说:
如果您的应用使用后端服务器进行身份验证或访问Google 来自后端服务器的API,您必须获取OAuth 2.0客户端ID 这是为您的服务器创建的。
但我不明白为什么这么重要?如果我做了一些与我的Android设备的SHA1相关联的凭据,我仍然可以获得令牌并将其传递给我的后端,那么为什么我使用为后端创建的凭据这么重要呢?
更新我认为我误读了文档。我认为它不希望我在我的设备中使用为我的后端创建的客户端ID,只是为我的后端创建了一个单独的id,因为为Android / iOS创建的凭据没有客户端密钥
答案 0 :(得分:0)
在使用后端服务器进行身份验证中,您可以看到此警告:
不要在后端服务器上接受普通用户ID,例如您可以使用GoogleSignInAccount.getId()方法获得的用户ID。修改后的客户端应用程序可以向服务器发送任意用户ID以模拟用户,因此您必须使用可验证的ID令牌来安全地获取服务器端登录用户的用户ID。
因此,如果你想用后端验证用户,你需要在android上调用getIdToken(),将它发送到服务器,验证服务器上收到的令牌(这里你需要检查客户端ID) 为什么重要?在同一章中,您可以阅读:
ID令牌中的aud值等于您的应用程序客户端之一 标识。此检查是必要的,以防止发出ID令牌 恶意应用程序用于访问您的同一用户的数据 应用程序的后端服务器。
出于身份验证的目的,您可以使用Android凭据中的ClientId。 如果要代表用户使用API的服务器端访问,则需要Web凭据。在这种情况下,您将需要Web凭证,因为它还包含clientSecret,必须交换收到的令牌以访问和刷新令牌。