好的。我刚刚花了一天中最好的时间来解决这个问题。如果您无权访问 API 面板来编辑您的 facebook api 允许的域(并且您需要使用 SSL 来伪造它)。
这就是我所做的:
我正在我的桌面上运行节点服务器。
您需要确保您的节点服务器已经指向您想要在项目中运行/包含的任何文件。 (即如果您不使用节点进行开发,此解决方案可能对您没有帮助)。
确保您已安装 express 和 vhost。我使用这样的命令行创建了服务器密钥和证书:
openssl genrsa -out myKey.pem
openssl req -new -key key.pem -out csr.pem
openssl x509 -req -days 9999 -in csr.pem -signkey key.pem -out myCert.pem
rm csr.pem
我将这两个文件移到了运行服务器实例的当前节点目录中。
我这样创建了服务器实例:
var vhost = require('vhost'),
express = require('express'),
vhost: {
'default': 'www.mybigfakeserver.com' // this should match what your api key allows
},
require('https').createServer({
key: fs.readFileSync('myKey.pem'),
cert: fs.readFileSync('myCert.pem')
}, app).listen(443);
在您的主机文件中添加您需要伪造的任何内容。例如
127.0.0.1 www.mybigfakeserver.com
这是取自 facebook api。您需要将其添加到您的 HTML 文件中:
<script>
FB.init({
appId : 'PUT YOUR APP KEY HERE',
version : 'v2.0',
status: true
});
function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script'
, 'facebook-jssdk'));
</script>
启动你的节点服务器。
浏览到https://www.mybigfakeserver.com
您应该会看到您的网站。它现在应该能够伪造您的 facebook api,让您认为您正在创建应用程序的常规服务器上运行。
无需一直部署即可进行 facebook 开发。