Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使用apple身份验证实现passport_Node.js_Swift_Oauth 2.0_Passport.js - Fatal编程技术网

Node.js 如何使用apple身份验证实现passport

Node.js 如何使用apple身份验证实现passport,node.js,swift,oauth-2.0,passport.js,Node.js,Swift,Oauth 2.0,Passport.js,我有一个iOS应用程序和nodeJS后端。目前我已经实施了passport facebook战略。我从应用程序中获得facebook令牌,并将其发送到后端,在后端授权用户 // config var FacebookTokenStrategy = require('passport-facebook-token'); const passport = require('passport') const { facebook_client_id, facebook_client_secret }

我有一个iOS应用程序和nodeJS后端。目前我已经实施了passport facebook战略。我从应用程序中获得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那样做呢?

经过几次尝试后,多亏了本文档,我找到了解决方案

您需要在您的身体帖子中发送:

{
   "grant_type": "authorization_code",
   "code": "YOUR_CODE",
}
代码:

“在发送到您的应用程序的授权响应中接收到的授权代码。该代码仅供一次性使用,有效期为五分钟。授权代码验证请求需要此参数。”Apple文档