Facebook javascript SDK Поделиться версия из файлов свойств в jsp не работает [webapp]
Я использую файл свойств для управления идентификаторами приложений и версиями.
вот файл свойств:
#Facebook APP ID & Version
#My Local
facebookShareAppId = xxxxxxxxxxx
#UAT
#facebookShareAppId = xxxxxxxxxxx
#QA
#facebookShareAppId = xxxxxxxxxxx
facebookShareVersion = v2.7
============================
Я получаю значение свойства из контроллера с помощью нашей утилиты, мой метод контроллера имеет следующее:
String facebookAppId = PropertyFileReader.getProperty(PropertyFileConstants.PROP_SOCIALNETWORK, "facebookShareAppId");
String facebookShareVersion = PropertyFileReader.getProperty(PropertyFileConstants.PROP_SOCIALNETWORK, "facebookShareVersion");
page.addObject("facebookAppId", facebookAppId);
page.addObject("facebookShareVersion", facebookShareVersion);
return page;
============================
Мой JSP получает значения, когда я проверяю его, используя ${facebookAppId} и ${facebookShareVersion}
<input id="facebookAppId" type="hidden" value = "${facebookAppId}"/>
<input id="facebookShareVersion" type="hidden" value = "${facebookShareVersion}"/>
когда я пытаюсь войти в систему, он отображает мое текущее значение для facebookAppId и facebookShareVersion. (Текущая версия "v2.7")
=====================
<script>
window.fbAsyncInit = function() {
FB.init({
appId : ${facebookAppId},
xfbml : true,
version : ${facebookShareVersion}
});
};
</script>
когда я набираю это, мне выдается ошибка: "Uncaught Error: указана неверная версия", но когда я изменяю версию на статическую строку "v2.7", она работает. Любая идея о том, как это исправить?
У меня также есть это (я на самом деле не знаю, что он делает):
<div id="fb-root"></div>
<script>(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>
<!-- Your share button code -->
<div class="fb-share-button" data-href="http://www.google.com/" data-layout="button" data-size="large" data-mobile-iframe="true"></div>
РЕДАКТИРОВАТЬ: я добавил код выше
1 ответ
Удалил вторую вставку SDK и перенес ее в мой Javascript, настроил js.src, добавил версию и appId из скрытого элемента в JSP, после чего все заработало. Конечный код выглядит так:
Javascript:
var appId = $("#facebookAppId").val();
var version = $("#facebookShareVersion").val();
(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#xfbml=1&version="+ version + "&appId=" + appId;
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
JSP:
<input id="facebookAppId" type="hidden" value = "${facebookAppId}"/>
<input id="facebookShareVersion" type="hidden" value = "${facebookShareVersion}"/>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : ${facebookAppId},
xfbml : true,
version : ${facebookShareVersion}
});
};
</script>
Теперь версию и appId можно получить из файлов свойств:)