TL; DR
установите FB._https
в true
перед вызовом FB.init
.Вот так:
FB._https = true;
FB.init({
/* your app id and stuff */
});
Пояснение
Если вы унифицируете Facebook JavaScript SDK, вы увидите, что это в основном объектный литерал с кучей свойств.Одним из этих свойств является _https
, которое является логическим значением.Это свойство определяет, какой набор URL использовать (хранится в FB._domain
) при выполнении запросов API.Похоже, что Facebook хранит два набора URL-адресов для каждого типа запроса API - безопасный и незащищенный URL-адрес, - а затем использует функцию переключателя под названием getDomain()
, чтобы определить, какой из них использовать при выполнении запросов.
Причина, по которой JavaScript SDK вызывает предупреждения безопасности, связана со способом определения свойства FB._https
.Вот как это в настоящее время определяется по состоянию на 2011-8-24:
_https: (window.name.indexOf('_fb_https') > -1)
Очевидно, что Facebook считает, что если свойство window.name
содержит _fb_https
, то оно должно бытьбезопасное приложение.Это явно неверно.Настоящий тест должен выглядеть примерно так:
_https: window.location.protocol == "https:"
К сожалению, SDK не является открытым исходным кодом или даже хорошо документирован, поэтому я не могу отправить запрос на извлечениедля этого изменения: P.В краткосрочной перспективе , установив FB._https
в true
вручную перед вызовом FB.init
, должны добиться цели.