【问题标题】:How to get dummy google access token to test oauth google api如何获取虚拟谷歌访问令牌来测试 oauth google api
【发布时间】:2014-10-28 17:07:57
【问题描述】:

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

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

我知道 facebook 会允许你通过这个 url https://developers.facebook.com/tools/accesstoken/ 这样做

谷歌有这样的方法吗?

【问题讨论】:

    标签: oauth google-api


    【解决方案1】:

    您需要刷新令牌以编程方式获取访问令牌刷新令牌几乎不会过期:@ 987654321@.

    有关刷新令牌限制的更多信息 (https://usefulangle.com/post/51/google-refresh-token-common-questions):


    刷新令牌何时过期?

    刷新令牌不会过期,除非有一些特殊情况:

    • 用户已删除您的 Google 应用程序。
    • 刷新令牌已有六个月未使用。
    • 用户更改了密码并且刷新令牌包含 Gmail 范围。 这意味着刷新令牌只有在他之前授予管理他的 Gmail 的权限,然后后来更改了他的密码时才会失效。 对于 Youtube、Calendar 等其他 Google 服务,更改密码不会使刷新令牌失效。
    • 应用为用户生成新的刷新令牌超过 50 次。

    如何获得刷新令牌 - 看我的回答:https://stackoverflow.com/a/68844709/1046909

    【讨论】:

      【解决方案2】:

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

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

      同样,您可以向服务帐号授予与普通测试用户相同的权限。

      【讨论】:

        【解决方案3】:

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

        即使这个答案没有直接回答主题,我认为有必要在这里写出来让一些人考虑这个变通方法,适应大多数自动化测试情况。

        【讨论】:

          【解决方案4】:

          目前解决此问题的最佳方法是登录 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... 的请求。 复制此完整网址
          6. 选择此请求并选择 Cookie 选项卡。 复制所有 cookie。你应该有ACCOUNT_CHOOSERAPISIDCONSENTGAPS、...的cookies。

          现在,在您的测试期间,您可以对上面捕获的 URL 发出 HTTP GET 请求,并且在请求中您应该包含上面捕获的 cookie。您应该在 Location 标头中显示的 URL 中收到带有 code=... 的 302 响应。

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

          Google OAuth 游乐场在这方面对我们没有帮助,因为您仍然需要一些手动交互来生成授权代码(游乐场不是“自动”的)。

          【讨论】:

            【解决方案5】:

            使用Google OAuth playground

            请求:

            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 documentation

            【讨论】:

            • 这对 IMO 没有帮助,您只是遇到了同样的问题,因为您无法以编程方式生成代码。现在问题变成了“如何获得一个虚拟的谷歌授权码......”。 Facebook 提供了创建测试用户的功能,并通过使用您的应用令牌调用 graph.facebook.com/v2.4{app-id}/accounts/test-users 立即为该用户获取访问令牌。
            • 我只是投票支持@joelittlejohn 的答案。 Playground 仍然需要用户交互。
            • 最后我通过保存浏览器cookie并将它们附加到我的测试中的授权请求来实现这一点。它们会持续很长时间。
            • @joelittlejohn 你能在这里解释更多关于你的解决方案吗stackoverflow.com/q/51962057/1356559
            • @joelittlejohn 嗨
            猜你喜欢
            • 2012-02-12
            • 1970-01-01
            • 2012-08-03
            • 2017-11-13
            • 2013-07-20
            • 1970-01-01
            • 2017-04-23
            • 1970-01-01
            • 2011-08-21
            相关资源
            最近更新 更多