【问题标题】:Dynamically show Facebook Open Graph using URL query string使用 URL 查询字符串动态显示 Facebook Open Graph
【发布时间】:2012-06-20 21:54:07
【问题描述】:

我正在开发一个网络应用程序,用户可以在其中获得优惠券和类似的东西。每次用户选择并请求优惠券时,我都需要使用 Javascript sdk 通过 Open Graph 发布一个操作。

当您点击优惠券时,它会将您重定向到页面coupondetail.php?cid=248(其中“Cid”是优惠券 ID)。实际上我用 PHP 个性化了 og 元标记:这样 Facebook 应该为每个共享的 ?cid 抓取不同的内容。

这实际上是我使用 PHP 个性化它们的方式: (Mycouponapp 是一个示例名称!)。

  <head>
    <meta charset="ISO-8859-1">
    <title>Coupons</title>
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" xmlns:fb="https://www.facebook.com/2008/fbml"> 
<head prefix="og: http://ogp.me/ns# mycouponapp: 
                  http://ogp.me/ns/apps/mycouponapp#">
  <meta property="fb:app_id" content="*appid*" /> 
  <meta property="og:type" content="mycouponapp:reward"/> 
  <meta property="og:title" content="<?php echo $couponname; ?>" /> 
  <meta property="og:image" content="http://www.mycouponapp.com/<?php echo $couponimgurl; ?>" /> 
  <meta property="og:description" content="<?php echo $couponname; ?>" /> 
  <meta property="og:url" content="http://www.mycouponapp.com/coupondetail.php?cid=<?php echo $cid; // coupon id ?>">

十天前我在测试网站,我设置了一个静态的og:title,称之为“样品奖励”。即使我更改了代码,今天当我使用 Javascript 发布操作时,它仍然显示“Matteo 在 Mycouponapp 上获得了示例奖励”,而不是显示“Matteo 在 Mycouponapp 上获得 couponname”。

我已经使用 Facebook 调试工具尝试再次抓取内容,但它不起作用(即使调试工具显示正确的优惠券详细信息!)

此外,如果我点击“示例奖励”文本,我将被重定向到 http://www.mycouponapp.com/coupondetail.php?rid=,并且您可以看到末尾没有 Cid

我真的不明白为什么。我剪辑了我的 JavaScript 代码:也许问题就出在这上面! Facebook JS SDK 在此之前已经加载。

<script>
 function postCoupon()
  {

   FB.login(function(response) {
   if (response.authResponse) {

      FB.api(
        '/me/_AppName_:get?reward=http://www.mycouponapp.com/coupondetail.php?cid=<?php echo $rid; ?>',
        'post',
        function(response) {
           if (!response || response.error) {
              console.log(response.error);
           } else {

              alert('Pook was successful! Action ID: ' + response.id);
           }
        });
        }
 }, {scope: 'publish_actions'});


  }
  </script>

  <script>
    window.fbAsyncInit = function() {
      FB.init({
        appId      : '_App Id_', // App ID
        status     : true, // check login status
        cookie     : true, // enable cookies to allow the server to access the session
        xfbml      : true  // parse XFBML
      });
    };



  </script>

我的代码有什么问题?谢谢!

【问题讨论】:

  • 不幸的是,我想没有,因为我在调试器中没有任何警告,我发布了 100 多个操作来尝试强制更新。
  • 您的意思是您发布的帖子不超过 100 条?还是你做到了?如果您这样做了,则无法再更改该 URL 上的标题
  • 不幸的是我做到了。但即使更改了 Rid(以及相应的 og 元标记),旧消息仍然存在。
  • 看起来很奇怪。我重命名了 .php 文件,但在发布操作时仍然看到旧文本。已尝试使用其他 Facebook 帐户。

标签: php javascript facebook facebook-javascript-sdk facebook-opengraph


【解决方案1】:

此时,最好的办法可能是将您的 url 方案更改为 mycouponapp.com/coupondetail/248 之类的东西,这样每张优惠券都有一个唯一的 url。

您可以通过在 .htaccess 文件中重写 url 或更改 PHP 应用程序的 url 方案来做到这一点。

【讨论】:

  • 参数应该可以正常工作,也许 OP 没有正确编码它们,或者没有使用与最初传入的参数相同的 og:url 值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-28
  • 2012-01-15
相关资源
最近更新 更多