Как я могу реализовать паспорт с аутентификацией Apple - PullRequest
1 голос
/ 29 мая 2020

У меня есть приложение iOS и серверная часть nodeJS. На данный момент я реализовал стратегию паспорт-фейсбук. Из приложения я получаю токен facebook и отправляю его на бэкэнд, где авторизую пользователя.

// config
var FacebookTokenStrategy = require('passport-facebook-token');
const passport = require('passport')
const { facebook_client_id, facebook_client_secret } = require('../config')

passport.use(new FacebookTokenStrategy({
    clientID: facebook_client_id,
    clientSecret: facebook_client_secret,
}, function (accessToken, refreshToken, profile, done) {
    done(null, profile)
}
));

И промежуточное ПО

const passport = require('passport')
require('../config/passport-facebook')
require('../config/passport-apple')
require('../config/passport')

const { INVALID_TOKEN, UNAUTHORIZED } = require('../config/constants')

module.exports = (req, res, next) => {
    passport.authenticate(['apple','facebook-token', 'jwt'], function (err, user, info) {
        if (err) {
            if (err.oauthError) {
                res
                    .status(400)
                    .json({ message: INVALID_TOKEN })
            }
        } else if (!user) {
            res
                .status(401)
                .json({ message: UNAUTHORIZED })
        } else {
            req.user = user
            next()

        }
    })(req, res, next);
}

Теперь мне нужно реализовать вход в систему через Apple. Пробовал использовать эту библиотеку паспорт-яблоко Но не могу заставить работать. Я получаю токен из приложения, отправляю его обратно, но получаю только

GET - /api/v1/shirts/?sorted%5BcreatedAt%5D=-1&filtered%5Bstate%5D=&pageNum=1&pageSize=10 - 302 - Found - 0b sent - 15 ms

Я не знаю, правильный ли это подход. Должен ли я получить информацию о пользователе из приложения, отправить ее на бэкэнд и назначить токен JWT созданному пользователю? Или как я могу сделать то же самое, что и с facebook?

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