我的应用程序中有一个特定页面,我希望用户能够共享他们在上一页上做出的某些选择,这是我从数据库中收到的选择。
所以,例如 - 我有一个用户 - 巴里。我可以使用$ {user}访问他的名字。
他被问到一个问题:
他们选择的答案已提交给数据库,我现在希望答案显示为Facebook的共享描述。显然,每个用户的答案都是独一无二的 - 所以我不能在这里硬编码任何信息。
我的代码如下:
<meta property="og:description" content="${user} thinks:%0A%0A<c:forEach var='animal' items='${animals}' >${animal} - ${animal.thoughts}%0A</c:forEach> />
当我查看页面的源代码时,我看到了:
<meta property="og:description" content="Barry thinks:%0A%0AElephant - Gray%0ABird - Chirpy%0AMonkey - Funny%0ADog - Loyal />
然而,当试图在Facebook上分享内容时,描述只是空的,好像没有描述一样。
不幸的是,此页面仅在用户登录时可用,因此使用Facebook刮刀https://developers.facebook.com/tools/debug/只会向我显示已注销登录页面的og数据。
我在这里错过了什么吗?
修改
根据@ Cbroe在下面的评论,我现在已经调整了要在公共页面上共享的代码(IE不需要登录即可查看)。
我还将描述和图片位置设置为URL中的参数 - 这样任何共享此页面的人都会看到描述和与他们相关的图像。
通过Facebook刮刀运行完整的网址时,我看到了我之后的确切结果: 但是,当实际从应用程序共享链接时,URL中的动态信息将被忽略。
<meta property="og:description" content="${param.description}" />
<meta property="og:image" content="${param.image}" />
我的og:url包含完整的URL,包括动态参数。如果其他人有任何想法,我很乐意听到他们。
编辑2
由于公司政策,已删除帮助CBroe调试的链接。我的回答中提供了示例链接。
答案 0 :(得分:0)
非常感谢@CBroe通过这个过程向我提供帮助并帮助我完成评论,我现在已经找到了解决这个问题的方法。
首先,我创建了一个面向客户端的页面,该页面不需要用户登录才能查看。这将充当动态内容将被共享的页面。
我现在的代码看起来像这样:
元标记
<meta property="og:title" content="My Title" />
<meta property="og:url" content="${pageUrl}" /> // generates FULL URL including all parameters
<meta property="og:description" content="${param.description}" />
<meta property="og:image" content="${param.image}" />
共享生成器(使用jQuery)
var currentLink = encodeURIComponent(window.location.href); // NB to use encodeURIComponent instead of just encodeURI
var tWindow;
$('.facebookShare').on('touchstart click', function(){
tWindow = window.open('about:blank', 'sharer', 'toolbar=0,status=0,width=548,height=325');
tWindow.location.href = 'https://www.facebook.com/dialog/share?app_id=${facebookAppId}&display=popup&href=' + currentLink;
});
然后用于共享页面的链接看起来像这样:
使用此代码,在共享页面时,每次都会生成正确(和动态)的图像和描述。
再一次,@ CBroe帮助我找到了底线 - 我希望将来可以帮助其他人。