Coinbase Connect(OAuth2)"请求缺少必需参数,包含不受支持的参数值,或者格式错误。"

时间:2016-08-30 23:10:29

标签: node.js express coinbase-api

亲爱的stackoverflowser,

我正在努力建立一个与Coinbase集成的Electron应用程序。

首先,我要使服务器(NodeJS)与OAuth2一起使用。

每件事情都很有效,但是当我想用指示的帖子请求将code更改为access token时,它会给我以下错误:

{ error: "invalid_request", error_description: "The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed." }

我已将https://localhost:3000/auth/coinbase/callbackhttps://localhost:3000/profile添加到有效的API URI中。

几个小时后我没有成功搞清楚。

我的服务器是:

var express = require('express');
var app = express();
var fs = require('fs')
var https = require('https');
var coinbase = require('coinbase')
var request = require('request');

var options = {
    key: fs.readFileSync('./ssl/coinbase.dev.key'),
    cert: fs.readFileSync('./ssl/coinbase.dev.crt'),
};

var client_id = 'gues it'
var client_secret = 'gues it'

app.use(express.static('static'));

app.get('/login/coinbase', function(req, res) {
    res.redirect('https://www.coinbase.com/oauth/authorize?response_type=code&redirect_uri=https://localhost:3000/auth/coinbase/callback&client_id=' + client_id + '&scope=wallet:user:read,wallet:accounts:read')
})

app.get('/auth/coinbase/callback', function(req, res) {
    var data = {
        client_id: client_id,
        client_secret: client_secret,
        grant_type: 'authorization_code',
        code: req.query.code,
        redirect_uri: 'https://localhost:3000/profile'
    }

    request.post(
        'https://api.coinbase.com/oauth/token', data, function (error, response, body) {
            console.log(body)
            res.send(body)
        }
    );
})

app.get('/', function(req, res) {
    res.send('home')
})

app.get('/profile', function(req, res) {
    res.send('profile')
})

var server = https.createServer(options, app);

server.listen(3000)

提前致谢,

西奥

[编辑] 我联系了Coinbase的开发人员,他们对使用Coinbase的OAuth上没有NodeJS示例感到惊讶,因此他们将其添加到他们的路线图中。

1 个答案:

答案 0 :(得分:1)

这很可能是由以下原因引起的:

  1. 您的应用程序设置中没有列出'http://127.0.0.1:3000/profile'作为有效的重定向API。
  2. 您正在重复使用已经交换过令牌的授权码。
  3. this page的这一部分:
  4.   

    OAuth2重定向URI

         

    为了增加安全性,所有redirect_uris都必须使用SSL(即以。开头)   https://开头)。没有SSL的URI只能用于开发和   测试并不会在生产中得到支持。

    请联系api@coinbase.com以解决问题。