这是我对 Web 应用程序的身份验证流程的理解;
当我转到 时Google developers console > Create Credentials > OAuth Client id > Android [Application type]
,它会询问我:名称、SHA1 指纹和包名。
我假设不需要重定向 URI,当我在创建凭据时设置包名称时,当用户授权我的应用程序时,我的应用程序将获得控制权或更确切地说是身份验证代码。(如本答案所示)。如果我的理解有误,请纠正我。
此时,我需要将 auth_code 发送到服务器进行验证,这需要客户端 ID 和密码。但是在创建凭据时,我没有提供任何客户端机密。
那么这整件事应该如何运作呢?
更新
我试图从他们的教程中生成配置。它生成了 2 个凭据:一个用于 Web 应用程序,另一个用于 Android。它还生成了一个credentials.json
包含 Web 客户端条目的条目。现在,如果我理解正确,此代码将进入 android 应用程序以获取身份验证代码。
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestServerAuthCode("client id issued for web application")'
.build()
但是,如果我的上述发现是正确的,那么它会引发更多问题来验证我的发现。
- 我什么时候会传递为 Android 生成的客户端 ID?
- 在这种情况下,重定向 URL 是什么?(我认为我们不需要设置它)
- 我是否必须使用服务器端的所有客户端 ID 来验证 auth_code?