passport-facebook 中如何解决 国内服务器 不能和Facebook交互的问题
发布于 4 个月前 作者 chenjiyong 416 次浏览 来自 问答

passport-facebook 是一个验证登录的中间件,在使用过程中,因为要面对国外用户,服务器在国内;在国外的用户想用Facebook验证登录,却因为 墙的原因导致 无法交互,实现登录,如何解决这个问题呢

10 回复

买一台海外服务器,单独起一个服务做proxy

@MiguelValentine 我也是打算这样做的,也有一个现成的海外服务器,就是 proxy 具体怎么做 一直没有找到好的解决方案

@chenjiyong 改passport-facebook的facebook网址,转到porxy上,porxy全程转发。

@MiguelValentine 嗯 proxy 如何做到 全程转发 指教一下 我自己尝试多次 未成功 急啊

@chenjiyong 你是不会改passport-facebook还是不会做proxy转发。

@MiguelValentine Screen Shot 2015-12-03 at 10.27.34 AM.png 我是想在 passport-facebook 验证策略 里面把 Facebook 的地址 用 proxy 的地址替换 但是 不知道 这些地址是 get 请求 或者 post 请求 参数是什么 所以 一直没有成功,主要是不知道怎么做 proxy 全程转发,希望指点一下。

@chenjiyong 全程指点就太麻烦了。我给段代码你。你自己开悟= =

//现写的,自信写
var url = require('url')
var urlProxy = {
	'/a':'https://graph.facebook.com/me'
}
var proxy = function(req,res){
	req.actPath = url.parse(req.url).path;
	if(urlProxy[req.actPath]){
			var option = url.parse(urlProxy[req.actPath]);
			var reqB = https.request(option,function(resB){
				var list =[]
				resB.on('data',function(trunk){
					list.push(truck)
				})
				resB.on('end',function(){
					res.write(Buffer.concat(list))
					res.end()
				})
			})
			req.on('data',function(trunk){
				reqB.write(trunk);
			})
			req.on('end',function(){
				reqB.end();
			})
	}else{
		res.end();
	}
}
回到顶部