没有弹出对话框的 Coinbase Oauth2 授权

Coinbase Oauth2 authorization without pop-up dialog

我正在使用 Spring 5 和 Java 8 并创建一个 RESTful 客户端,它将登录到 CoinBase 并在给定时间为我进行交易。我知道那里有一个不受支持的 Java Coinbase SDK,我也在研究该代码以寻找线索。

我在我的 Spring 应用程序中使用 CoinBase Oauth2 客户端,到目前为止它非常成功。我使用回调 URL 进行授权调用。这将打开一个对话框,如果我已登录,则要求我使用 MyApp 授权 My Coinbase Acct,我收到一封电子邮件,表明已完成此操作。如果我还没有登录到 Coinbase,那么我会被要求提供我的 Coinbase username/password 然后它被授权,我再次收到一封电子邮件,说这没问题。

我看到的下一步是调用我的重定向 URL,并使用随其传回的代码。众所周知,该代码允许我请求访问令牌。我可以做到,是的,我得到了我的访问令牌。我现在可以使用该访问令牌调用 Coinbase API。但是,此访问令牌仅适用于 7200(秒?),所以两个小时?我希望能够获得一个访问令牌并让它自动为我登录到 coinbase。我不想每次进行交易时都必须重新授权......或者我必须这样做吗?

在我看来,从授权返回的 "code" 是非常短暂的,我可以立即使用它来获取访问令牌。

所以,对我来说最大的问题是……对于 Coinbase API,我怎样才能无限期地让自己获得授权?我希望能够已经获得授权,然后定期获得访问令牌,以便我可以为自己进行交易?????这甚至可以用 coinbase API 实现吗? 我是否必须使用 Coinbase Pro 来获得我可以使用的那种能力? Coinbase Pro 甚至有可能吗?

我是 Coinbase 的新手,因为它是另一个第三方 API 我已经了解了它的细微差别。在编写 Java 代码以访问第三方 RESTful api 时,我不是新手。 因此,我们将不胜感激任何帮助。谢谢!

我猜你的申请中缺少 'refresh token'。

很难说没有代码片段如何实现它,但这里的一些步骤应该有所帮助:

  1. 查看有关他们提供的刷新令牌的 coinbase 文章 https://developers.coinbase.com/docs/wallet/coinbase-connect/access-and-refresh-tokens

  2. 获取并保存refresh_token以及授权后的token

  3. 创建将使用您的刷新令牌获取新对(令牌,refresh_token)的函数。您可以在步骤 (1)

  4. 中找到 curl 示例
  5. 一个。使 ExceptionHandler 如果得到 401 将调用 (3)(我猜它是 401 - 如果令牌过期)

    b。保存步骤 2 中的 'expires_in' 并在每次请求之前检查它。如果需要请调用 (3)