使用jsp可以获得动态数据以Open Graph协议显示吗?

时间:2017-09-25 11:24:20

标签: facebook jsp facebook-graph-api

我的应用程序中有一个特定页面,我希望用户能够共享他们在上一页上做出的某些选择,这是我从数据库中收到的选择。

所以,例如 - 我有一个用户 - 巴里。我可以使用$ {user}访问他的名字。

他被问到一个问题:

  • 当我询问$ {animals}
  • 时,首先想到的是什么

他们选择的答案已提交给数据库,我现在希望答案显示为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刮刀运行完整的网址时,我看到了我之后的确切结果: Link Preview 但是,当实际从应用程序共享链接时,URL中的动态信息将被忽略。

<meta property="og:description" content="${param.description}" />
<meta property="og:image" content="${param.image}" />

我的og:url包含完整的URL,包括动态参数。如果其他人有任何想法,我很乐意听到他们。

编辑2

由于公司政策,已删除帮助CBroe调试的链接。我的回答中提供了示例链接。

1 个答案:

答案 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;
});

然后用于共享页面的链接看起来像这样:

https://[myURL]?description=My%20favourite%20animals:%20Elephant%20-%20gray%20%7C%20Dog%20-%20Cute%20%7C%20Cat%20-%20Cant%20be%20trusted%20%7C%20Leopard%20-%20Never%20changes%20its%20spots&image=[url_to_my_image]

使用此代码,在共享页面时,每次都会生成正确(和动态)的图像和描述。

再一次,@ CBroe帮​​助我找到了底线 - 我希望将来可以帮助其他人。