0

所以我一直在尝试让 Facebook 身份验证正常工作。在本地,我的代码运行良好。一旦使用 Claudia 包裹在 Lambda 中,Facebook 登录似乎停止工作。我在 Facebook 开发人员设置中验证了我的登录网址

var FB = require('fb');
FB.options({ version: 'v2.7' });
fb = new FB.Facebook({});
var bcrypt = require('bcryptjs');
var UserService = require('../services/user.service');
var config = require('../config');
var jwt = require('jsonwebtoken');
_this = this

exports.getFBLoginCredentials = async function (req, res, next) {
    try {
        let access_token = req.body.facebook_token;

        FB.setAccessToken(access_token);

        let facebookInfo = await new Promise(function (resolve, reject) {
            FB.api('me/', { locale: 'en_US', fields: 'first_name, last_name, email' }, function (response) {
                if (!response || response.error) {
                    reject(Error('Facebook Auth failed'));
                }
                resolve(response);
            });
        });
        let user = await UserService.findUserByEmail(facebookInfo.email);

        if (user) {
            let updatedToken = await _createToken(user, 1);
            let updatedRefreshToken = await _createToken(user, 7);

            user.token = updatedToken;
            user.refreshToken = updatedRefreshToken;
            user.facebookToken = access_token;
            user.emailVerified = true;

            await UserService.updateUser(user);

            return res.status(200).json({ status: 200, data: user, message: "Successfully Retrieved data" });;
        }
        let userFields = {
            name: facebookInfo.first_name + ' ' + facebookInfo.last_name,
            email: facebookInfo.email,
            emailVerified: true,
            facebook_token: access_token
        }
        let createdUser = await UserService.createUser(userFields);

    return res.status(200).json({ status: 200, data: createdUser, message: "Successfully Retrieved data" });
    }
    catch (error) {
        return res.status(400).json({ status: 400, message: error.message });
    }
}
4

1 回答 1

0

弄清楚了。事实证明,AWS Lambda 的超时设置为 3.0 秒,但调用时间比这更长。

于 2018-08-31T04:26:08.537 回答