我最近一直在尝试使用Coinbase iOS SDK,并且在检索用户的以太坊,莱特币和比特币现金余额以及历史交易时遇到了问题。目前,我只能用比特币,美元和欧元来做到这一点,这似乎与Coinbase提供的演示应用程序的行为保持一致。
我已经在Oin2的Coinbase API访问页面上配置了一个应用程序,并且在该应用程序中使用了生成的客户端ID和密码。
该问题似乎源于以下事实:我修改了Coinbase iOS SDK,以允许我将account参数传递为
'全部'。我曾希望这可以让我查看所有用户帐户(ETH,BTC,LTC等)的详细信息,但是,当在Coinbase对象上调用“getAccountsList”时,我只会获得BTC,USD和EUR。
NSString *accessToken = [response objectForKey:@"access_token"];
Coinbase *client = [Coinbase coinbaseWithOAuthAccessToken:accessToken];
[client getAccountsList:^(NSArray *accounts, CoinbasePagingHelper *paging, NSError *error) {
for (CoinbaseAccount *account in accounts) {
// Only BTC, USD and EUR are in the accounts array at this point.
}
}];
令人惊讶的是,权限请求页面正确地要求用户提供所有钱包,如下面的屏幕快照所示:
我怀疑对此的解决方案是使用API key ,因为您可以准确指定要授予访问权限的帐户。但是,我计划分发该应用程序,因此不应使用此技术。
这是我发送的URL的示例:
https://www.coinbase.com/oauth/authorize?response_type=code&client_id=CLIENT_ID_GOES_HERE&account=all&scope=balance%20transactions%20user&redirect_uri=com.example-name.example-app.coinbase-oauth%3A%2F%2Fcoinbase-oauth
有谁知道我如何使用OAuth请求访问所有用户帐户并能够检索每个帐户的详细信息?我定义的范围在某种程度上不正确吗?我能想到的唯一选择是请求每个钱包一个一个的访问权限并存储单独的访问 token 。但是,这并不是很好的用户体验。
谢谢!
最佳答案
我相信iOS SDK需要更新。它仍然连接到旧的API版本。
我正在使用原始的Coinbase SDK。没有 fork 相反,在wallet:accounts:read
范围旁边,我还将["accounts": "all"]
作为meta参数添加到startAuthentication方法。
和。我没有使用getAccountList
方法,而是使用了api v2帐户端点的更通用的.doGet
方法(因此coinbase.doGet("https://api.coinbase.com/v2/accounts", parameters: nil) {(response, error) -> Void in
这为我提供了所有钱包的帐户信息。在这种情况下,您确实需要对响应对象进行一些json处理。
关于ios - 通过Coinbase iOS SDK检索所有用户钱包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48123361/