Spring Coinbase Oauth2授权,无弹出对话框

Spring Coinbase Oauth2授权,无弹出对话框,spring,rest,java-8,bitcoin,coinbase-api,Spring,Rest,Java 8,Bitcoin,Coinbase Api,我正在使用Spring5和Java8创建一个RESTful客户端,它将登录CoinBase并在给定时间为我进行交易。我知道Coinbase有一个不受支持的Java SDK,我也在研究该代码以寻找线索 我在我的Spring应用程序中使用CoinBase Oauth2客户端,到目前为止,它非常成功。我使用回调URL进行授权调用。这会打开一个对话框,如果我已登录,会要求我使用MyApp授权Coinbase帐户,我会收到一封电子邮件,表明这已完成。如果我还没有登录Coinbase,那么我会被要求输入我的

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

我在我的Spring应用程序中使用CoinBase Oauth2客户端,到目前为止,它非常成功。我使用回调URL进行授权调用。这会打开一个对话框,如果我已登录,会要求我使用MyApp授权Coinbase帐户,我会收到一封电子邮件,表明这已完成。如果我还没有登录Coinbase,那么我会被要求输入我的Coinbase用户名/密码,然后它被授权,我会再次收到一封电子邮件,表示这是可以的

我看到的下一个步骤是,我的重定向URL被调用,代码随它一起传回。正如大家所知,该代码允许我请求访问令牌。我可以这样做,是的,我得到了我的访问令牌。我现在可以使用该访问令牌调用Coinbase API。然而,这个访问令牌只适用于7200(秒),那么两个小时?我希望能够获得一个访问令牌,并让它自动登录到coinbase。我不想每次交易都要重新授权。。。还是我必须

在我看来,授权后返回的“代码”非常短暂,我可以立即使用它来获取访问令牌

所以,对我来说,最大的问题是。。。对于Coinbase API,我如何无限期地保持授权?我希望能够获得授权,然后定期获得访问令牌,这样我就可以为自己进行交易?????这在coinbase API中是可能的吗? 我是否必须使用Coinbase Pro来获得我可以使用的能力?使用Coinbase Pro是否可能

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

我猜您的应用程序中缺少“刷新令牌”。

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

  • 看看coinbase关于他们提供的刷新令牌的文章

  • 获取并保存刷新\ U令牌以及授权后的令牌

  • 创建将使用刷新令牌获取新对(令牌、刷新令牌)的函数。您可以在步骤(1)中找到curl示例

  • a。生成ExceptionHandler,如果得到401,它将调用(3)(我猜是401-如果令牌过期)

    b。保存步骤2中的“expires_in”,并在每次请求之前检查它。如有需要,请致电(3)


  • 我相信您丢失了一个令牌,该令牌可能是通过令牌本身传递给您的。您可以使用它来延长令牌生命周期。谷歌说有一个:这很有帮助。在发布了我的问题之后,我回去阅读了这个文档。是的,Coinbase说refresh_令牌是非导出的(除非我们使其过期),所以我现在将refresh_令牌存储到我的数据库中,与此特定用户一起使用。当cron作业运行我的后端代码时,它会获取我的refresh\u令牌,并使用它来获取新的access\u令牌和refresh\u令牌,然后我将该refresh\u令牌放回数据库以再次使用。如果刷新令牌不起作用,则用户必须重新授权并获取新令牌。听起来对吗?我假设您现在在每个操作上请求新的访问令牌(使用刷新令牌)。这是可行的。但我仍然建议您捕获未经授权的异常/关注expires\u in,并在旧的访问令牌过期后请求新的访问令牌。顺便说一句,这绝对不是任何方式的要求。只是一件好事。我相信在每个请求上使用刷新令牌(和重新授权)应该有一些安全漏洞,但我可能在这方面错了。