如何使用新的 google 登录 play services 8.3 获取访问令牌?

How to get access token with new google sign in with play services 8.3?

我正在尝试切换到 google play services 8.3 中引入的新 google 登录,因为它不需要获取帐户权限。但是,我无法在登录用户后获取访问令牌。

GoogleSignInOptions.Builder 中有一个 requestIdToken(String clientServerId) 方法,但是当我从 google 开发人员控制台输入应用程序的 Oauth 2 客户端 ID 时,它甚至没有登录用户.

我是否为 "client Server Id" 使用了错误的 ID?

确保您使用的是网络客户端的客户端 ID(您的 oauth 服务器,类型应为 "Web application"),而不是 Android 客户端。

String clientId = <Client ID of type Web Application.apps.googleusercontent.com>
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(clientId)
                .requestEmail()

您必须创建 Web 应用程序类型的新凭据 "OAuth client Id"(如 @swimmingtomars 所述)

添加任何限制似乎也很重要,即授权 JavaScript 来源或授权重定向 URI。当要求客户提供要求类型 Web 应用程序的客户 ID 时,这让我很困惑。他们没有创建一个新的,而是重用了网络应用程序正在使用的现有客户端 ID。