Я использую стратегию паспорта goodreads на моем сервере nodejs / express для аутентификации пользователя. После входа в систему они смогут добавлять книги на свои полки на моем сайте и получать информацию о них. В настоящее время я могу получить доступ к информации, используя ключ разработчика, предоставляемый Goodreads, но для запросов API api post / get, которые говорят «this использует oauth», я получаю ошибку 401 каждый раз, хотя я успешно вхожу в систему со стратегией паспорта.
Пример:
Получить запросы на добавление в друзья
Возвращает XML с запросами на добавление в друзья текущего пользователя, используя OAuth. Вам нужно будет зарегистрировать свое приложение (обязательно).
URL: https://www.goodreads.com/friend/requests.xml
HTTP метод: GET
Параметры:
страница: 1-N страница результатов для отображения (необязательно, по умолчанию 1)
Для этого у меня есть:
app.get('/api/friendrequests', async(req,res) => {
var friendreqs = await
axios.get('https://www.goodreads.com//friend/requests.xml');
console.log(friendreqs+'friendreqs');
})
Мне не хватает чего-то, что я должен сделать?
Паспорт Goodreads:
const passport = require('passport');
const GoodReadsStrategy = require('passport-goodreads');
const mongoose = require('mongoose');
const keys = require('../config/keys');
const util = require('util');
const User = mongoose.model('User');
passport.serializeUser((user,done) => {
//console.log('serialized');
done(null, user.id);
})
passport.deserializeUser((id,done) => {
//console.log('deserialized');
User.findById(id).then(user => {
done(null, user);
})
})
passport.use(
new GoodReadsStrategy(
{
consumerKey: keys.GOODREADS_KEY,
consumerSecret: keys.GOODREADS_SECRET,
callbackURL:'/auth/goodreads/callback',
proxy:true
},
async (accessToken, refreshToken, profile, done) => {
//console.log(util.inspect(profile,false,null,true) + 'hi im profile now ehehe');
try{
const existingUser = await User.findOne({ goodreadId: profile.id });
if(existingUser){
return done(null, existingUser);
}
const user = await new User({
goodreadId: profile.id,
}).save();
done(null, user);
}catch(err){
done(err, null);
}
}
)
)