正在从Android获取Google oauth授权令牌-返回的范围无效/未知错误

正在从Android获取Google oauth授权令牌-返回的范围无效/未知错误,android,oauth-2.0,Android,Oauth 2.0,我尝试使用GoogleOAuth对我的android应用程序上的用户进行身份验证。 然后我想把它发送到我的应用服务器,这样它就可以随时与谷歌日历连接 我试着用 GoogleAuthUtil.getToken(getApplicationContext(),mAccountName,mScope) 在本条之后: 当我使用它的范围 mScope=“oauth2:https://www.googleapis.com/auth/calendar https://www.googleapis.com/a

我尝试使用GoogleOAuth对我的android应用程序上的用户进行身份验证。 然后我想把它发送到我的应用服务器,这样它就可以随时与谷歌日历连接

我试着用
GoogleAuthUtil.getToken(getApplicationContext(),mAccountName,mScope)

在本条之后:

当我使用它的范围
mScope=“oauth2:https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile";
我得到一个令牌,有效期为一小时

但是当我尝试获取授权代码时(这样我可以使用 mScope2=“oauth2:server:client\u id:{client\u id}.apps.googleusercontent.com”+”:api\u范围:https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile“;

我收到“无效的\u范围”或“未知”异常

我做错了什么

编辑: 好的,在google API控制台上创建一个新应用程序并将plus.login添加到作用域后,我会得到一个代码,但由于某些原因,我的服务器无法解析此令牌。当绑定到解析服务器时,会得到一个关于重定向URL的错误。
顺便说一句,当我使用相同的参数执行web流时,它会工作。

该范围字符串只有在传递给GoogleAuthUtil()时才被记录下来工作,请看,在Android上。但如果它也能在iOS上工作,那就太酷了;我们在Android上的基础设施有点落后。

好的,找到了解决方案,我希望谷歌有更多关于谷歌Oauth和Android的文档。使用Android和离线令牌需要知道一些事情

  • 创建google客户端ID时,在创建web应用程序之前不要创建服务应用程序

  • 必须包括在您的范围内

  • 最奇怪的是,为了解析我服务器上的一次性授权代码,我不得不使用来自Android客户端ID详细信息(看起来甚至不像URL)的重定向URL,而不是来自Google API控制台上的Web客户端详细信息


  • 您只需按照正确的步骤/格式指定作用域。请在此处找到它们

    您是否有机会将代码发布到任何地方(Github等)?我遇到了一个未知的异常,这让我简直疯了,我不知道该怎么做了…非常感谢。第三步其实很重要。我整天都在想我的请求出了什么问题,谷歌真的应该在提供好的文档方面做更多的工作。你能更好地解释第三步吗?也许给我一些建议一些直接指向(丑陋的)谷歌API控制台页面的URL。