OK. Я потратил большую часть дня, работая над этим. Если у вас нет доступа к панели API для редактирования доменов, которые разрешает ваш API Facebook (и вам нужно использовать SSL для его подделки).
Вот что я сделал:
Я запускаю сервер узлов на моем рабочем столе.
Вам нужно будет убедиться, что ваш сервер узлов уже указывает на любые файлы, которые вы хотите запустить / включить в свой проект. (то есть, если вы не используете узел для разработки, это решение, вероятно, не поможет вам).
Убедитесь, что у вас установлен экспресс и 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);
Внутри вашего файла hosts добавьте все, что вам нужно, чтобы подделать. например,
127.0.0.1 www.mybigfakeserver.com
Это взято из API Facebook. Вам нужно будет добавить это в ваш 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
Вы должны увидеть свой сайт. Теперь он сможет смоделировать ваш API-интерфейс на Facebook, заставляя вас думать, что вы работаете на своем обычном сервере, для которого было создано приложение.
Займитесь разработкой Facebook без необходимости все время развертывать.