我应该按照什么步骤在我的Express服务器上获得Facebook的HTTPS?

2025-07-03 12:15:02 3
  • 收藏
  • 管理

    一两个月前,我在这个网站上寻求帮助,几位同事提供了他们的时间(@Schoen,@rg305等)

    我当时正在使用Windows创建一个完全使用node.js的应用程序,我打算从Facebook登录。

    嗯,试了几天后,我还是不明白,所以我决定改用Ubuntu。

    我从头开始创建我的应用程序,并使用faceebock登录,这是它的新HTTPS策略不允许的。

    该应用程序正在使用Express运行,我看到了几件事情,但我不能执行复杂的操作。

    我只想告诉我如何通过HTTPS获取我的url(michaelgram.test)。

    我必须告诉你,我对这个话题是新的,这就是为什么我不能在Windows上得到它,我希望现在就得到它。

    我已经在这个网站上搜索了其他不成功的问题。在我之前的问题中,他们也向我展示了certbot,但我没有在我工作的地方找到Ubuntu 18.04。

    我给你看代码,和上一次一样。

    对不起,语法错误,我必须使用翻译器。

    谢谢。

    Let Express=Required(‘Express’);

    让AWS=Required(‘AWS-SDK’);

    让MUTER=REQUIRED(‘MUTER’);

    设MulterS3=Required(‘Multer-S3’);

    让ext=Required(‘文件扩展名’);

    让cookieParser=Required(‘cookie-parser’);

    让bodyParser=Required(‘Body-Parser’);

    让EXPRESSION=REQUIRED(‘Express-Session’);

    让Passport=Required(‘Passport’);

    让Michaelgram=Required(‘Michaelgram-客户端’);

    让auth=Required(‘./auth’)

    让CONFIG=REQUIRED(‘./CONFIG’);

    Let port=Process.env.PORT||5050;

    Let Client=michaelgram.createClient(config.client);

    设S3=新的aws.S3({

    AccesKeyID:config.aws.accesKey,

    SecAccessKey:config.aws.askKey

    });

    设STORAGE=MulterS3({

    S3:S3,

    Bucket:‘Michaelgram’,

    ACL:‘PUBLIC-READ’,

    元数据:函数(请求、文件、CB){

    Cb(空,{fieldName:file.fieldname})

    },

    键:Function(请求,文件,CB){

    Cb(空,+Date.now()+‘.+ext(文件.原始名称))

    }

    });

    WET UPLOAD=MULTER({STORAGE:STORAGE}).Single(‘图片’);

    让app=EXPRESS();

    App.use(bodyParser.json());

    App.use(bodyParser.urlencode({Extended:False}));

    App.use(cookieParser());

    应用程序.使用(EXPRESSION({

    密码:config.ret,

    重新保存:False,

    SaveUnInitialized:False

    }))

    App.use(passport.初始化为())

    App.use(passport.ession())

    App.set(‘view Engine’,‘pug’);

    App.use(EXPRES.STATIC(‘public’));

    Passport.use(auth.localStrategy);

    Passport.use(auth.facebookStrategy);

    Passport.deserializeUser(auth.deserializeUser);

    Passport.SerializeUser(auth.SerializeUser);

    App.get(‘/’,Function(req,res){

    Res.render(‘index’,{title:‘Michaelgram’});

    })

    App.get(‘/signup’,Function(req,res){

    Res.render(‘index’,{title:‘Michaelgram-Signup’});

    })

    App.post(‘/signup’,Function(req,res){

    Let User=req.body;

    Client.saveUser(用户,函数(err,usr){

    If(Err)返回res.Status(500).Send(err.Message)

    调试器

    Res.reDirect(‘/Signin’);

    });

    });

    App.get(‘/Signin’,Function(req,res){

    Res.render(‘index’,{title:‘Michaelgram-Signin’});

    })

    App.post(‘/LOGIN’,passport.authate(‘local’,{

    成功重定向:‘/’,

    失败重定向:‘/Signin’

    }));

    App.get(‘/logout’,Function(req,res){

    Req.logout()

    Res.reDirect(‘/’)

    });

    App.get(‘/auth/facebook’,passport.vernate(‘facebook’,{cope:‘mail’}));

    App.get(‘/auth/facebook/allback’,passport.authate(‘facebook’,{

    成功重定向:‘/’,

    失败重定向:‘/Signin’

    }));

    函数保证Auth(Req,res,Next){

    If(req.isAuthenticated()){

    返回下一个()

    }

    Res.Status(401).Send({Error:‘Not Authorated’})

    }

    App.get(‘/horami’,Function(req,res){

    If(req.isAuthenticated()){

    返回res.json(req.user)

    }

    Res.json({auth:False})

    })

    App.get(‘/api/Pictures’,Function(req,res,Next){

    Client.listPictures(函数(错误,图片){

    If(Err)返回res.end([]);

    Res.Send(图片)

    })

    })

    App.post(‘/api/Pictures’,ensureAuth,Function(req,res){

    Upload(请求,资源,函数(错误)){

    如果(错误){

    返回res.status(500).Send(上载文件时出错:${err.Message})

    }

    Let User=req.user

    Let Token=req.user.Token

    让用户名=req.user.username

    让src=req.file.Location

    客户端.savePicture({

    SRC:SRC,

    用户ID:用户名,

    用户:{

    用户名:用户名,

    头像:用户。头像,

    名称:用户.名称

    }

    },令牌,函数(err,img){

    如果(错误){

    返回res.Status(500).Send(错误消息)

    }

    Res.end(上传文件:${req.file.Location});

    })

    })

    })

    App.get(‘/api/user/:用户名’,(req,res)=>{

    Var用户名=req.params.username;

    Client.getUser(用户名,函数(err,user){

    IF(ERR)返回res.Status(404).Send({Error:‘找不到用户’})

    Res.end(用户)

    })

    })

    App.get(‘/:用户名’,Function(req,res){

    Res.render(‘index’,{标题:Michaelgram-${req.params.username}});

    })

    App.get(‘/:用户名/:ID’,Function(req,res){

    Res.render(‘index’,{标题:Michaelgram-${req.params.username}});

    })

    APP.LISTEN(端口,函数(错误){

    如果(Err)返回console.log(‘hubo un error’),则进程退出(1);

    Sole.log(‘Michaelgram escuchando en el波多黎各5050’);

    }),您好,

    米盖利托:

    Michaelgram.test

    您不能使用非公共TLD从公共CA获取证书...

    谢谢你,没有感觉,这是我测试的那个,我也有Tego Michaelgram.com,但它很忙。正如我所说的,我正在学习之后创建一个应用程序,我不能使用michaelgram.test来进行测试…?

    我应该怎么做才能让脸书允许我用脸书…登录我的应用程序?

    我应该使用什么域名来进行测试?

    这是一个研究应用程序,不会发布,或者至少在你更多地了解Java脚本并相信它更大之前是不会发表的。

    我不能使用Michaelgram.…来做测试?

    在这个糟糕的大互联网上,计算机不会连接到主机名。它们连接到一个IP地址。但在顶级域名“test”下注册域名是不可能的:这是一个“保留”的顶级域名,不能在全球互联网上使用。因此,计算机不可能将您的“.test”域解析为任何IP地址,因此计算机无法连接到您的服务器。如果电脑不能连接到你的服务器,Facebook也不能。

    你可以使用一个子域,如test.michaelgram.com进行测试。在课程中进行的测试(一年多前录制的)中,老师用该域名登录了Facebook的应用程序。

    然后,我有一个域名WebApplicationDeveloper…但我的主机不允许我放置来自我的SSL证书。

    如果我创建自己的子域并将其放入代码中进行测试,并且能够通过Facebook…的登录测试?

    这是我的子域:michaelgram.webApplicationDeveloper.es,Miguelito:

    在课程中进行的测试中(记录在一年多前),老师用那个域名登录了Facebook的应用程序。

    也许Facebook当时没有同样的政策?

    米盖利托:

    如果我创建自己的子域并将其放入代码中进行测试,并且能够通过Facebook…的登录测试?

    这是我的子域:michaelgram.

    是的,我认为这很好。我应该遵循什么步骤来实现我的目标,我已经用Medium的例子尝试了,但没有成功。

    如果你告诉我要遵循的步骤或学习的文档,作为一个想要学习的初学者,看看我是如何为连接配置Express的,我会帮自己一个忙,这不会再困扰我了。

    问题是我的主机不允许我包含SSL证书,我应该如何继续?

    我不知道我还能做什么…

    在我电脑的主目录中创建文件夹,可能您没有在正确的位置创建它们。您的DNS看起来很奇怪-您确定这是您控制的域吗?此域有一个指向parkingsrv0.dondominio.com的CNAME记录,该域名与您的域名服务器相同。这听起来对吗?这反过来又指向37.152.88.55。

    你的第二个域名服务器看起来也有点困惑,因为没有parkingsrv0.dondominio.com的A记录,只是另一个递归CNAME记录。我不太明白他的意思。

    当然,这个领域是我的。

    我正在尝试在我的主机中创建证书,我被告知可以使用We‘s Encrypt:

    Hostinger教程-16年10月20日

    如何通过在共享主机上加密来安装免费的SSL

    让我们加密提供免费的SSL证书。了解如何在共享主机帐户上加密中安装和续订SSL。

    剩下的问题是,我是否可以使用该域来测试我的应用程序。

    我希望通过把域名放在我电脑的主机上,它会起作用,我会得到它。

    考虑到我的应用程序使用Express…运行,我认为这是一种混淆,因为在一个地方你说的是michaelgram.webapplication ationDeveloper.es,而在另一个地方你说的是michaelgram.developer.es,这两个地方是不同的。如果您的域真的是michaelgram.webApplicationDeveloper.es,您不能使用它来获得machinegram.Developer.es的证书,对不起,这是我的一个错误。

    我的子域是michaelgram。WebApplicationDeveloper.es

    我会想办法解决的,我已经试了快两个月了。

    通过更改Ubuntu,我认为这会更容易。

    感谢给予的支持,我会尝试从另一个方面获取。,您目前在使用michaelgram.webApplications ationDeveloper.es?,Miguelito时是否遇到NXDOMAIN错误:

    错误:DNS问题:NXDOMAIN在A中查找Michaelgram.Developer.es

    我不知道我还能做什么…

    是的,它显示以下错误:Error:Dns Problem:NXDOMAIN查找A中的Michaelgram.Developer.es

    我不知道我还能做什么。

    但现在我要到明天才能做更多的测试。如果你的真实域名是Michaelgram.webDeveloper.es,为什么会显示NXDOMAIN在A中查找Michaelgram.Developer.es?您是不是在什么地方输入了michaelgram.你用这个名字创建了CSR吗?,我不知道为什么,明天我会继续做测试,今天是不可能的。

    给了我以下错误,他们一直无法在主机上帮助我。

    我也尝试了http://zerossl.com/和我在主机上给出错误的方式

    我还能做什么呢…?

    感谢您的支持

    错误:

    -bash-4.2$php bin/acme问题--域michaelgram.webapplication ationDeveloper.es--路径/home/u811029570/public_html--服务器let加密

    http://michaelgram.webapplicationdeveloper.es/.well-known/acme-challenge/-1cNfAsA9uEWx7U6hIUiPh7sxInwudgUi6KwB0-LoL8提供有效载荷

    Kelunik\Acme\AcmeException:验证失败,请检查‘http://michaelgram.webapplicationdeveloper.es/.well-known/acme-challenge/-1cNfAsA9uEWx7U6hIUiPh7sxInwudgUi6KwB0-LoL8’.的响应正文它包含‘

    404未找到

    404未找到

    奥利斯特伊

    但‘-1cNfAsA9uEWx7U6hIUiPh7sxInwudgUi6KwB0-LoL8.z8tOI7bvDkjrp945EiWin90bNT-7NoZvRqzrro6i3NE’是意料之中的。在/home/u811029570/acme-client/vendor/kelunik/acme/lib/Verifiers/Http01.php:62,中,您是否可以在此服务器上创建//home/u811029570/public_html/.well-known/acme-challenge/test2.txt/u811029570/PUBLIC_HTMLTest.txt和另一个文件HOME?

    您是否可以在此服务器上创建文件/HOME/u811029570/PUBLIC_HTMLTest.txt和另一个文件/home/u811029570/public_html/.well-known/acme-challenge/test2.txt?

    是的,我要去,我还在连接,你已经相信你告诉我的地方的两个文件了。

    在/home/u811029570/public_html/.well-known/acme-challenge/中

    已经创建了一个具有ID名称的文件,即无序字母列表。

    我必须在控制台上操作,网络无法正常工作

    上一页:我应该直接学Swift还是ObjectiveC? 下一页:我应该多久运行一次cerbot cron作业来更新证书?
    全部评论(0)