如何获取虚拟谷歌访问令牌来测试oauth google api?

时间:2014-09-04 04:14:49

标签: oauth google-api

有什么方法可以生成访问令牌来测试oauth使用gmail登录?

我创建了一个谷歌应用程序,并得到了客户端和秘密ID。

我知道facebook会允许您通过此网址https://developers.facebook.com/tools/accesstoken/

执行此操作

谷歌有没有这样的方法?

感谢。

4 个答案:

答案 0 :(得分:12)

使用Google OAuth游乐场:

https://developers.google.com/oauthplayground/

请求:

POST /oauth2/v3/token HTTP/1.1
Host: www.googleapis.com
Content-Type: application/x-www-form-urlencoded

code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7&
client_id=8819981768.apps.googleusercontent.com&
client_secret={client_secret}&
redirect_uri=https://oauth2-login-demo.appspot.com/code&
grant_type=authorization_code

(成功)回复:

{
  "access_token":"1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in":3920,
  "token_type":"Bearer"
}

我还强烈建议您阅读Google OAuth 2.0文档 https://developers.google.com/accounts/docs/OAuth2WebServer

答案 1 :(得分:0)

目前最好的解决方案是登录Google帐户,捕获此会话的Google cookie,然后在以后的测试中使用这些cookie获取授权码。每次测试运行时,它都可以创建一个授权码,并将其交换为访问令牌。我发现这些Cookie可以持续6个月或更长时间。

我通过使用Chrome浏览器来做到这一点:

  1. 打开Chrome私人浏览会话
  2. 打开https://myaccount.google.com并使用您选择的Google凭据登录
  3. 打开Chrome开发工具(Ctrl-Shift-I)的“网络”标签,然后选择“保留日志”
  4. 执行OAuth登录流程以使用Google登录
  5. 在Chrome开发工具的“网络”标签中,您会看到转到https://accounts.google.com/o/oauth2/auth...的请求。 复制此完整URL
  6. 选择此请求,然后选择Cookies标签。 复制所有cookie 。您应该具有ACCOUNT_CHOOSERAPISIDCONSENTGAPS,...
  7. 的cookie

现在,在测试期间,您可以对上面捕获的URL进行HTTP GET请求,并且在请求中应包括上面捕获的cookie。在code=...标头中显示的URL中,您应该获得一个带有Location的302响应。

最后,在测试中,您可以使用到https://www.googleapis.com/oauth2/v4/token的POST将此code交换为访问和刷新令牌。

Google OAuth运动场在这里无济于事,因为您仍然需要一些手动交互来生成授权代码(运动场不是“自动的”)。

答案 2 :(得分:0)

别忘了您应该能够模拟Google OAuth。 换句话说,在大多数测试情况下(监视和某些类型的负载测试除外),应该有可能模拟到Google OAuth和相应回调的成功连接。为此,您可能只需要使用正在使用的测试工具中已经存在的方法即可。

即使此答案不能直接回答主题,我认为也有必要在此处编写它,以使某些人可以考虑针对大多数自动测试情况的​​解决方法。

答案 3 :(得分:0)

如果您只想使用问题标题中所述的任何oauth令牌测试API(不一定是从测试用户登录流程中获取的API),则可以使用服务帐户和oauth2l实用程序进行curl调用GCP文档中概述了以下内容:

https://cloud.google.com/service-usage/docs/getting-started

同样,您可以像常规测试用户一样向服务帐户授予权限。