API Coinbase via OAuth

Ao trabalhar na conexão com a API Coinbase para automatizar transações de comerciantes de Bitcoin, encontrei algumas ‘pegadinhas’ que não estão bem explicadas em sua documentação e vale a pena observar se você estiver se conectando à API do zero:

Tipo de conteúdo: application / json

A documentação deles afirma “Todas as solicitações usam o application/jsontipo de conteúdo” e, de fato, se você enviar uma consulta malformada para a API, o erro retornado solicitará que você verifique sua codificação JSON. No entanto, você não precisa usar JSON para a solicitação se usar a sintaxe de colchetes nos nomes das variáveis ​​de consulta para indicar a estrutura:

POST https://coinbase.com/api/v1/buttons
Content-Type: application/json

{
"button": {
"name": "test",
"price_string": "1.23",
"price_currency_iso": "USD",
}
}

ou

POST https://coinbase.com/api/v1/buttons
Content-Type: application/x-www-form-urlencoded

button
[name]=test&button[price_string]=1.23&button[price_currency_iso]=USD

Ambas as consultas funcionam e, se você estiver usando uma biblioteca HTTP, provavelmente o padrão Content-Typepara uma POSTsolicitação será definido como application/x-www-form-urlencodedpara você. Portanto, tome cuidado para evitar fazer uma solicitação como esta, pois esta não funcionará:

POST https://coinbase.com/api/v1/buttons
Content-Type: application/x-www-form-urlencoded

{"button": {"name": "test","price_string": "1.23","price_currency_iso": "USD",}}

Token de autorização

A documentação da Coinbase afirma que, após obter um token de autorização do processo OAuth, você pode usá-lo na string de consulta como:

https://coinbase.com/api/v1/account/balance?access_token=MY_ACCESS_TOKEN

No entanto, ao pesquisar sua biblioteca cliente PHP , você pode descobrir como essa biblioteca faz isso com o cabeçalho da solicitação.Authorization: Bearer MY_ACCESS_TOKEN

Isso está de acordo com o rascunho do OAuth 2.0 , pois há várias maneiras de apresentá- access_tokenlo assim que o tiver, e a Coinbase parece honrar qualquer uma delas, então use a que for mais conveniente para você.