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

Android 如何使用新的google登录play services 8.3获取访问令牌?,android,google-play-services,access-token,google-signin,Android,Google Play Services,Access Token,Google Signin,我正在尝试切换到google play services 8.3中引入的新google登录,因为它不需要get accounts权限。但是,在登录用户后,我无法获取访问令牌 GoogleSigninoOptions.Builder中有一个requestIdToken(String clientServerId)方法,但当我从google开发者控制台输入应用程序的Oauth 2客户端Id时,它甚至没有登录用户 我是否为“客户机-服务器Id”使用了错误的Id 确保您使用的是web客户端的客户端ID(

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

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


我是否为“客户机-服务器Id”使用了错误的Id

确保您使用的是web客户端的客户端ID(您的oauth服务器应为“web应用程序”类型),而不是Android客户端。

String clientId=
String clientId = <Client ID of type Web Application.apps.googleusercontent.com>
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(clientId)
                .requestEmail()
GoogleSignenOptions gso=新建GoogleSignenOptions.Builder(GoogleSignenOptions.DEFAULT\u登录) .requestIdToken(客户端ID) .requestEmail()
您必须创建Web应用程序类型的新凭证“OAuth客户端Id”(如@swimmingtomars所述)

添加任何限制(即授权的JavaScript源代码或授权的重定向URI)似乎也很重要。当要求客户提供他们的客户id并要求输入Web应用程序时,这让我大吃一惊。他们没有创建新的客户端Id,而是重用了web应用程序正在使用的现有客户端Id


谢谢!这就解决了问题。也许他们现在称之为身份证代币,但我认为是一样的。在登录之前,我正在使用验证后端的用户。@droidster实际上我无法获得正确的访问令牌,我尝试了requestIdToken()和插入此处的其他getServerAuthCode():并且所有这些都返回无效值,您能验证您获得的令牌不仅在应用程序中有效,而且在该链接中有效吗?感谢实际上id令牌与访问令牌不同。我的错。请查看我上面评论中的链接。您正在使用令牌信息api访问令牌。使用idtoken的tokenInfo api@droidster谢谢,我的令牌现在有效(基于requestIdToken)。您是如何修改后端的?我的后端服务器不喜欢这些新令牌。基本上我的问题是,你能使用google play services 8.3之前的相同令牌验证方法吗?或者您的后端已更新为使用google文档显示的内容来验证此新的google登录方法为了在野外支持应用程序的早期版本,我将保留旧代码以验证服务器上运行的access令牌,并添加新代码以验证id令牌。