Для запроса API Goodreads требуется Oauth, а не ключ разработчика, но при входе в систему возвращается ошибка 401? - PullRequest
0 голосов
/ 07 ноября 2018

Я использую стратегию паспорта 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);
        }




    }


        )
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...