2

私は、ユーザーがクーポンなどを入手できるWebアプリを開発しています。ユーザーがクーポンを選択してリクエストするたびに、JavascriptSDKを使用してOpenGraphでアクションを公開する必要があります。

クーポンをクリックすると、ページにリダイレクトされますcoupondetail.php?cid=248(「Cid」はクーポンIDです)。実際、私はogメタタグをPHPでパーソナライズしています。このようにして、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 ?>">

10日前に私はウェブサイトをテストしていてog:title、それを「サンプル報酬」と呼んで静的に設定しました。コードを変更しても、今日Javascriptを使用してアクションを公開すると、「MatteoはMycouponappでクーポン名を取得しました」ではなく、「MatteoはMycouponappでサンプル報酬を取得しました」と表示されます。

Facebookのデバッグツールを使用してコンテンツを再度スクレイピングしようとしましたが、機能しません(デバッグツールに正しいクーポンの詳細が表示されていても!)

また、「サンプルリワード」のテキストをクリックすると、リダイレクトさhttp://www.mycouponapp.com/coupondetail.php?rid=れますが、ご覧のとおりCid、最後にはありません。

理由がよくわかりません。私はJavaScriptコードをクリップします:多分問題はそれにあります!FacebookJSSDKはこの前にすでにロードされています。

<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>

私のコードの何が問題になっていますか?ありがとう!

4

1 に答える 1

2

この時点で、おそらく最善の方法は、URLスキームを次のようなものに変更してmycouponapp.com/coupondetail/248、各クーポンに一意のURLを持たせることです。

これを行うには、.htaccessファイルのURLを書き換えるか、PHPアプリのURLスキームを変更します。

于 2012-06-21T00:35:43.527 に答える