java - Coinbase Pro 和沙盒登录端点

标签 java spring java-8 oauth-2.0 coinbase-api

我正在使用 Spring 5 和 Java 8 创建一个应用程序,以使用 Coinbase Pro 为自己和其他人进行交易。我有一个 coinbase.properties 文件,它具有以下属性:

authorize.url=https://www.coinbase.com/oauth/authorize
access.url=http://www.coinbase.com/oauth/token
token.url=https://api.coinbase.com/oauth/token
current.user.url=https://api.coinbase.com/v2/user

我可以调用Coinbase的授权页面,并且用户允许授权。授权后,它会返回到我的回调页面,其中包含代码和我最初发送的状态。我可以使用该代码生成access_token 和refresh_token。我将refresh_token保存在数据库中,因为我知道access_token仅适用于2小时,如果我想再次执行某些操作,我可以使用refresh_token来获取新的access_token和新的refresh_token...一切都很好。

因此,如您所见,我正在使用 Oauth2 向 Coinbase 进行身份验证。我可以使用 user.url 来获取有关传入用户 ID 的用户的信息。当然,我还得传入access_token:

 header:  Authorization:  Bearer {access_token}

所以,第一个问题是……我可以使用 Coinbase Pro 和 Coinbase Pro Sandbox 的 OAuth 机制为自己和其他人进行交易吗???在查找 Coinbase Pro 时,我只看到了 REST API 链接:

https://api.pro.coinbase.com      (not interested in the FIX link)

我猜我必须将我的属性更改为:

authorize.url=https://www.coinbase.com/oauth/authorize
access.url=http://www.coinbase.com/oauth/token
token.url=https://api.pro.coinbase.com/oauth/token
current.user.url=https://api.pro.coinbase.com/v2/user
order.url=https://api.pro.coinbase.com/orders

/orders 的 Coinbase Pro REST API 文档讨论了 API key 和消息签名。但这看起来就像我只是为自己进行交易。如果我为其他人进行交易,那么我会使用 Oauth2,这绝对是正确的选择。

我正在测试销售/交易订单的功能,我可以使用沙盒来实现此目的。 沙箱有点不同,我们有一个基本端点和 REST api 端点:

# https://public.sandbox.pro.coinbase.com/
# https://api-public.sandbox.pro.coinbase.com

在这种情况下,如果我使用 Oauth2 进行身份验证,我会期望以下结果:

authorize.url=https://public.sandbox.pro.coinbase.com/oauth/authorize
access.url=https://public.sandbox.pro.coinbase.com/oauth/token
token.url=https://api-public.sandbox.pro.coinbase.com/oauth/token
current.user.url=https://api-public.sandbox.pro.coinbase.com/v2/user
order.url=https://api-public.sandbox.pro.coinbase.com/orders

通过这种方式,我将 Oauth2 身份验证与 Coinbase Pro 沙箱结合使用,这样我就可以使用 access_token 为自己和其他人进行交易。我正在查看 Coinbase Pro 的文档,以及有关下订单的文档。我假设我还需要添加“身份验证”承载 {access_token} 的 header

如果这一切都是正确的,那么我就顺利上路了。我只是想验证我是否走在正确的道路上,如果不是,那么任何帮助都会非常有用。当然,如果我无法使用 Oauth2 身份验证为自己和其他人使用 Coinbase Pro 进行交易,那么我需要对此进行研究。

谢谢!

最佳答案

经过大量研究和“反复试验”,我发现Coinbase(标准)使用Oauth2,这意味着我们可以使用这种安全机制为其他人进行交易。然而,每笔交易的成本更高,而且您无法从 Coinbase Pro 获得交易详细信息。

从技术上讲,Coinbase Pro 与任何网站所说的完全不同。 Coinbase Pro 不以任何方式、形式或形式使用 Oauth2。它没有允许某人代表他人进行交易的机制。它使用一个 API key ,允许您创建密码,您有一个 key 和一个公钥,您可以使用它们创建机器人来为您和您单独进行交易。

这意味着任何网站(例如 CryptoHopper)都会强制您在其网站中输入 API key secret 信息,这绝对是一个坏主意。因为用户将其 key 输入该系统,所以 CryptoHopper 可以使用这些 key 为您进行交易。然而,安全性是一个大问题。我希望 CryptoHopper 能够对这些数据进行双重加密,以防数据遭到泄露。

这回答了我的问题,即 Coinbase 拥有一堆标准 Oauth2 REST API,可以确保使用访问和刷新 token 进行交易的安全性。

Coinbase Pro 有自己的 REST 端点:https://api.pro.coinbase.com 您登录 Coinbase Pro,然后可以在那里创建 API key 。

Coinbase Pro SANDBOX 有自己的 REST 端点:
https://api-public.sandbox.pro.coinbase.com

网站是:https://public.sandbox.pro.coinbase.com 登录此网站后,您可以看到虚拟银行帐户,并且您可以创建“沙箱”API key ,以便您可以针对该虚拟系统进行交易。

Coinbase Pro(无论是否是沙箱)与 Oauth2 有任何关系是我的错误。

希望这对其他人有帮助。

关于java - Coinbase Pro 和沙盒登录端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59364615/

相关文章:

java - java servicewrapper 的替代品?

java - 使用类名作为输入从方法返回二维数组

java - Spring Boot、多数据源和 JNDI 连接

java - svnkit + ssh 身份验证错误 (E170001)

java - Grails 上的 NoClassDefFoundError GANT 脚本

java - 如何调用 Oracle 函数返回记录表

java - .ParameterResolutionException : No ParameterResolver registered for parameter [jUnit 5 Tests]

java - 对数组进行排序后获取元素的排名

java - 使用 Streams 将嵌套整数列表转换为二维数组 ( List<List<Integer>> -> int[][] )

java - Collectors.toList() 中 LongStream VS Stream 的区别