Обмен oAuth-кода для секретного токена
Я делаю приложение, которое должно использовать oAuth для аутентификации игроков с серверов Blizzard, я хочу получить доступ к информации об их персонажах... и не могу понять, как запросить секретный токен. Я думаю, что я делаю мой запрос на сообщение неправильно ниже код, который я использую
app.post('/', function(req, res) {
var code = req.body.code; //this is the code i get ounce the player is redirected back to my redirect_uri
var redirectUri = "https://localhost:3000/oauth_callback.html";
var scope = "wow.profile";
var key = "they client_id i was given";
var secret = "they secret I was given";
var grantType = "authorization_code";
var tokenUri = "https://us.battle.net/oauth/token";
var uriBody = "?client_id=" + key + "&client_secret=" + secret + "&grant_type=authorization_code&code=" + code + "&redirect_uri=" + redirectUri + "&scope=" + scope;
request({
url: tokenUri, //URL to hit
method: 'POST',
headers: {
'Content-Type': "application/x-www-form-urlencoded",
},
body: uriBody //Set the body as a string
}, function(error, response, body){
if(error) {
console.log(error);
} else {
console.log(response.statusCode, body);
}
});
так что в основном я получаю код, отправляя с него на сервер запрос на публикацию и затем запускаю запрос на отправку на сервер Blizzard, пытаясь обменять мой код на токен доступа.
Я получаю ошибку:
401 '{"error":"unauthorized","error_description":"An Authentication object was not found in the SecurityContext"}'
я использую Node.js
& request.js
чтобы сделать сообщение, я предполагаю, что я не делаю правильный запрос сообщения?
2 ответа
В конце концов! вот как я получил это на работу! библиотека qs = query-string.js...
var token_params = qs.stringify({
client_id: key,
client_secret: secret,
code: code,
scope: scope,
grant_type: 'authorization_code',
redirect_uri: redirectUri
});
request('https://us.battle.net/oauth/token?' + token_params, function(error, response, body){
if (error) {
console.log(error);
} else {
console.log(body)
}
});
Я думаю body
ключ не приемлем в request
,
послать
data
вjson
еслиcontent-type
являетсяJSON
или жеform
еслиcontent-type
являетсяx-www-form-urlencoded
Как это
request({
url: tokenUri, //URL to hit
method: 'POST',
headers: {
'Content-Type': "application/x-www-form-urlencoded",
},
form: uriBody //Set the body as a string
}, function(error, response, body){
if(error) {
console.log(error);
} else {
console.log(response.statusCode, body);
}
});