Facebook javascript SDK 共享版本从 属性 文件到 jsp 不工作 [webapp]
Facebook javascript SDK Share version from property files to jsp not working [webapp]
我正在使用 属性 文件来管理 App ID 和版本。
这是 属性 文件:
#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: invalid version specified",但是当我将版本更改为静态字符串 "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>
编辑:我在上面添加了代码
删除了 SDK 的第二个嵌入,并将其转移到我的 Javascript,调整了 js.src,从 JSP 中的隐藏元素添加了版本和 appId,然后它工作了。最终代码如下:
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 :)
我正在使用 属性 文件来管理 App ID 和版本。
这是 属性 文件:
#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: invalid version specified",但是当我将版本更改为静态字符串 "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>
编辑:我在上面添加了代码
删除了 SDK 的第二个嵌入,并将其转移到我的 Javascript,调整了 js.src,从 JSP 中的隐藏元素添加了版本和 appId,然后它工作了。最终代码如下:
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 :)