2017-09-15 10 views
1

Yelp fusion API에 액세스하려고합니다. 그러나 내 OVH VPS에이 오류를 얻고,Yelp Fusion : 토큰을 가져올 수 없습니다.

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); 
}); 

나는이 동일한 호출로 올바른 반응을 얻고있다 APIGee를 사용 : 나는 documentation 다음이 코드에 온하고 (이것은에서 유의 본문 변수)

{ 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' } } 

저는 전화를 올바르게 설정하고 있다고 생각합니다. 누구든지 올바른 방향으로 나를 가르쳐 주시겠습니까? 고맙습니다!

+0

봐 (https://stackoverflow.com/questions/9870523/differences-in-application-json-and-application-x-www-form-urlencoded) –

+0

수 'content-type'으로 소문자로 확인 하시겠습니까? – abdulbarik

+0

@abdulbarik 작동하지 않았습니다. –

답변

0

데이터를 올바르게 제출하려면 옵션을 변경해야합니다. 데이터는 body 필드로 전환하고 대신 JSON 객체는 또한 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 
}; 

설정해야 할 문자열의 경우, 나는 헤더가 필요합니다 생각하지 않습니다. [여기]에서

확인 요청 options documentation

+0

[this code] (https://hastebin.com/hokexidixa.scala) 이 글은 [이 오류] (https://hastebin.com/konifaxana)입니다. vbs) 요청 라이브러리에 오류가있는 것 같습니다. 헤더 섹션이 없으면 원래 게시물에서 언급 한 오류가 발생합니다. 어떤 아이디어? 고맙습니다 –