Yelp融合:不能获得令牌

我试图访问Yelp fusion API。 我正在按照文档 ,来到这个代码:

const request = require('request'); // As you can see the common error of there being a whitespace // in one of these is not the case here const clientId = 'O<removed>w'; const clientSecret = 'm<removed>r'; const options = { url: 'https://api.yelp.com/oauth2/token', method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, json: { 'grant_type': 'client_credentials', 'client_id': clientId, 'client_secret': clientSecret } }; request(options, (err, res, body) => { if(err) { return console.log(err); } console.log(body); }); 

使用API​​Gee我得到了一个正确的响应与完全相同的调用,但是在我的OVH VPS我得到这个错误:(注意,这是从身体variables)

 { error: { code: 'VALIDATION_ERROR', description: 'client_id or client_secret parameters not found. Make sure to provide client_id and client_secret in the body with the application/x-www-form-urlencoded content-type' } } 

我相信我正确地设置了电话。 任何人都可以指出我正确的方向吗? 谢谢!

您需要更改选项才能正确提交数据。 数据进入body字段,如果它是一个JSON对象,而不是一个string,你需要设置json:true

 const options = { url: 'https://api.yelp.com/oauth2/token', method: 'POST', body: { 'grant_type': 'client_credentials', 'client_id': clientId, 'client_secret': clientSecret }, json: true }; 

另外,我不认为标题是必需的。

检查请求选项文档