我正在尝试使用Google OAuth 2来访问Google API。我使用服务器端方案跟踪this指南。
我获取代码没有问题,服务器重定向到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
页面。
然后,如果Google的服务器使用访问令牌进行响应,我尝试使用curl
(如指南中)进行测试。然而,它似乎很难失败。只有我能得到的回复是{"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"
我错过了什么吗?如何为访问令牌交换代码?
答案 0 :(得分:3)
您的urlencode
您的客户是否保密并重定向网址?这对我行得通。
应该是http%3A%2F%2Flocalhost
而不是https://localhost
。
答案 1 :(得分:3)
我遇到了同样的错误,直到我意识到我正在尝试连接我为iOS创建的客户端ID。所以对我来说,解决方案是在API Console上创建一个新的API密钥 - 密钥对,并将平台设置为“其他”。
现在我收到了其他错误,但这是另一个故事。 ;)
答案 2 :(得分:1)
当您使用错误的客户端密钥时发生。确保您使用的是Google API控制台中的正确客户端密码。我使用的是电子邮件地址,因为API控制台按以下顺序显示信息: