7

我正在尝试实施 Google OAuth 2 以访问 Google API。我遵循指南,使用服务器端方案。

我在获取代码方面没有问题,服务器重定向到 localhost(这是目前重定向 URI 中唯一允许的服务器)。为了实现这一点,我去https://accounts.google.com/o/oauth2/auth?client_id=whatever.apps.googleusercontent.com&redirect_uri=http://localhost/&scope=https://www.google.com/m8/feeds/&response_type=code页面。

然后,我尝试使用curl(如指南)来测试 Google 的服务器是否使用访问令牌进行响应。但是,它似乎很难失败。我能得到的唯一回应是{"error":"invalid_client"}。我确定我提供了 Google 希望我提供的所有内容 - 代码、客户端 ID、客户端密码、重定向 URI (localhost) 和grant_type=authorization_code.

整个curl命令行是:

curl https://accounts.google.com/o/oauth2/token -d "code=<code>&client_id=whatever.apps.googleusercontent.com&client_secret=<won't tell!>&redirect_uri=http://localhost&grant_type=authorization_code"

我错过了什么吗?如何用代码交换访问令牌?

4

3 回答 3

3

你有你urlencode的客户秘密和重定向网址吗?这对我行得通。

应该http%3A%2F%2Flocalhost代替https://localhost.

于 2011-04-14T21:29:41.007 回答
3

在我意识到我正在尝试连接我为 iOS 创建的客户端 ID 之前,我遇到了同样的错误。所以对我来说,解决方案是在API 控制台上创建一个新的 API 密钥对,并将平台设置为“其他”。

现在我遇到了其他错误,但这是另一回事。;)

于 2012-06-29T19:20:11.307 回答
1

当您使用错误的客户端密码时发生。确保您使用来自 Google API 控制台的正确客户端密码。我使用的是电子邮件地址,因为 API 控制台按以下顺序显示信息:

  1. 客户编号
  2. 电子邮件地址
  3. 客户端密码
于 2014-01-18T22:44:57.123 回答