Facebookのsharer.phpは、詳細なパラメーターを受け入れないように変更されましたか?


103

次のようなURLで(window.openを介して)共有ポップアップを開いています

https://www.facebook.com/sharer/sharer.php?s=100&p[title]=EXAMPLE&p[summary]=EXAMPLE&p[url]=EXAMPLE&p[images][0]=EXAMPLE 

先月の不明な点までは、すべてが順調でした。

現在起こっていることは、ポップアップダイアログが表示され、クエリ文字列パラメータによって提供されたタイトル、説明、画像、URLが正しく含まれていますが、投稿が送信されると、Facebookの結果のウォール投稿にはタイトル、説明、画像がありませんが、正しいURL。

突然これが機能しなくなった可能性のある最近の変更があったかどうか誰かが知っていますか?

いくつかの一般的な応答を横取りする:

  • 「sharer.php URLは廃止されました」-使用は継続しているようで、コンセンサスは主に問題が続いていると考えられていたようです-突然機能しなくなったはずの具体的な兆候は見られませんでした-何かを見逃した可能性があります

  • 「JavaScript SDK /これらのOGメタタグを使用する」-私の特定の状況では不可能-ただ私を信頼してください...あなたが本当に欲しいかどうか説明できますが、それは本当に関係ありません。

  • 「フィードダイアログを使用してください」-FBページに添付ファイル付きの投稿がサポートされていないため、適切ではありません


開発者 .facebook.com / bugs / 563991033677853の他の誰かがFacebookのバグを記録しているので、問題を抱えている他の人がFBにフラグを立て、そこに行ってこの問題があることを確認することをお勧めします。
2014年

同じ問題が発生している人のための更新... Facebookにこれをバグとして報告した他の人は、詳細を事前に提供したり、情報に応答したりするのにそれほど熱心ではなかったため、新しいバグレポートを再送信し、開発者に割り当てられました。ちょうどFBからのニュースを聞くのを待っています。developers.facebook.com/x/bugs/357750474364812
tdous 2014年

4
残念ながら、受け入れられた答えは正しいです。バグが「修正」されるのを3か月待った後、sharer.phpの受け入れられる動作が変更されたため、これらのパラメーターは使用できなくなりました。
2014

回答:


105

Facebookはカスタムパラメータをサポートしなくなりました sharer.php

共有者はカスタムパラメータを受け入れなくなり、Facebookはプレビューに表示されている情報を、FacebookにURL OGメタタグからの投稿として表示されるのと同じ方法でプルします。

sharer.phpの代わりにダイアログ/フィードを使用する

https://www.facebook.com/dialog/feed?
  app_id=145634995501895
  &display=popup&caption=An%20example%20caption 
  &link=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2Fdialogs%2F
  &redirect_uri=https://developers.facebook.com/tools/explorer

FBチームからの公式回答


1
私自身の質問に答えるために私を
打ち負かしてください

32
ただし、この場合はアプリIDが必要です。それが単なるウェブサイトだとしたら?
ドイツのカプアノ2014年

3
Facebookから:Webのフィードダイアログは、APIバージョン2.0で廃止されました。Webでは、開発者はより新しい共有ダイアログを使用することをお勧めします。これは、これらの古いダイアログと同じ機能をすべて実行できますが、Facebookログインを必要とせずにカスタムオープングラフストーリーをさらに公開できます。 developers.facebook.com/docs/sharing/reference/share-dialog
RubeOnRails 14

可能であれば、JavaScriptでFacebook SDKを使用することをお勧めします。コーディングははるかに簡単であり、上記のリンクフォームを使用するよりもうるさくないと思います。
ご覧ください

12
@LiquidDrummerでは、これらのタイプのURLを使用する全体のポイントは、SDKを使用する必要がないことです。それはあなたのページに不必要なパフォーマンスヒットを追加し、FBが人々のプライバシーを侵害するのを助け、プレーンタグまたはコールよりも単純ではありません<a>open()
ウォルフ2017

98

2017年7月18日以降、Facebookはユーザーが設定したカスタムパラメータを無視することを決定しました。この選択は、この回答によって提供される可能性の多くをブロックし、いくつかのWebサイトで使用されているボタンも壊します。

パラメータは2018年12月のように動作します。quotehashtag


突然これが機能しなくなった可能性のある最近の変更があったかどうか誰かが知っていますか?

パラメータが変更されました。現在受け入れられている回答は次のとおりです。

Facebookはカスタムパラメータをサポートしなくなりました sharer.php

しかし、これは完全に正しいわけではありません。まあ、それらはサポート推奨もしていないかもしれませんが、正しい名前がわかっている場合はカスタムパラメータを使用できます。これらには以下が含まれます:

  • URL(もちろん)→ u
  • カスタム画像→ picture
  • カスタムタイトル→ title
  • カスタム見積もり→ quote
  • カスタムの説明→ description
  • キャプション(別名ウェブサイト名)→ caption

たとえば、この質問を次のURLで共有できます。

https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fstackoverflow.com%2Fq%2F20956229%2F1101509&picture=http%3A%2F%2Fwww.applezein.net%2Fwordpress%2Fwp-content%2Fuploads%2F2015%2F03%2Ffacebook-logo.jpg&title=A+nice+question+about+Facebook&quote=Does+anyone+know+if+there+have+been+recent+changes+which+could+have+suddenly+stopped+this+from+working%3F&description=Apparently%2C+the+accepted+answer+is+not+correct.

それを試してみてください!

私が構築したツール、それが簡単にFacebook上でURLを共有することができ、カスタムパラメータを使用しています。それを使用してsharer.phpリンクを生成できます。ボタンを押して、開いたタブからURLをコピーするだけです。


2
どうもありがとうございます。
Nightmare_82

1
@TakácsZsoltページにJSは必要ありません。CMSまたはカスタムコードでサーバー側のURLを生成し、ユーザーに単純なURLを提供するだけです。公式の共有ボタンは、大量のKBのJSコードが含まれ、ユーザーを追跡するため、不適切です。また、独自のURLを共有している場合は、Facebook共有パラメーターに依存するのではなく、適切なOpenGraphタグを提供する方が適切です。:)
Andrea Lazzarotto

1
@Garavani、はい、あなたは正しいです。ツールのコメントで説明したように、これらのパラメーターは非推奨になり、削除されました。
Andrea Lazzarotto 2017

4
2018年4月の時点で、u暗黙的に無視される以外のパラメーターがあるようです。
レオ2018

1
以外にu唯一私が反映されたパラメータがあるquote
robskrob

3

あなたが何らかの理由で実装することが不可能であると言うので、あなたの問題はマーカーOpenGraphの欠如によって引き起こされます。

あなたにとって、唯一の解決策は、PHP Facebook APIを使用することです。

  1. まず、Facebookアカウントでアプリケーションを作成する必要があります。
  2. アプリケーションを作成するとき、コードには2つの重要なデータがあります。

    YOUR_APP_ID 
    YOUR_APP_SECRET
    
  3. こちらからFacebook PHP SDKをダウンロードしてください

  4. あなたのサイトからコンテンツを共有するためのこのコードから始めることができます:

    <?php
      // Remember to copy files from the SDK's src/ directory to a
      // directory in your application on the server, such as php-sdk/
      require_once('php-sdk/facebook.php');
    
      $config = array(
        'appId' => 'YOUR_APP_ID',
        'secret' => 'YOUR_APP_SECRET',
        'allowSignedRequest' => false // optional but should be set to false for non-canvas apps
      );
    
      $facebook = new Facebook($config);
      $user_id = $facebook->getUser();
    ?>
    <html>
      <head></head>
      <body>
    
      <?php
        if($user_id) {
    
          // We have a user ID, so probably a logged in user.
          // If not, we'll get an exception, which we handle below.
          try {
            $ret_obj = $facebook->api('/me/feed', 'POST',
                                        array(
                                          'link' => 'www.example.com',
                                          'message' => 'Posting with the PHP SDK!'
                                     ));
            echo '<pre>Post ID: ' . $ret_obj['id'] . '</pre>';
    
            // Give the user a logout link 
            echo '<br /><a href="' . $facebook->getLogoutUrl() . '">logout</a>';
          } catch(FacebookApiException $e) {
            // If the user is logged out, you can have a 
            // user ID even though the access token is invalid.
            // In this case, we'll get an exception, so we'll
            // just ask the user to login again here.
            $login_url = $facebook->getLoginUrl( array(
                           'scope' => 'publish_stream'
                           )); 
            echo 'Please <a href="' . $login_url . '">login.</a>';
            error_log($e->getType());
            error_log($e->getMessage());
          }   
        } else {
    
          // No user, so print a link for the user to login
          // To post to a user's wall, we need publish_stream permission
          // We'll use the current URL as the redirect_uri, so we don't
          // need to specify it here.
          $login_url = $facebook->getLoginUrl( array( 'scope' => 'publish_stream' ) );
          echo 'Please <a href="' . $login_url . '">login.</a>';
    
        } 
    
      ?>      
    
      </body> 
    </html>
    

Facebook開発者サイトで他の例を見つけることができます。

https://developers.facebook.com/docs/reference/php


3
あなたはまさにジョセフです。あなたが提供した情報がこのページを見つけた人に役立つことを願っています。そのため、私は投票しました。Facebookが行った変更を元に戻さない場合、PHPにフォールバックする必要があることはすでにわかっているため、私はそれを回答としてマークしていません。私が望んでいる完全なソリューションは、共有URLを使用する方法は、それが以前は機能していた方法と同様の方法であり、現在または将来存在しない可能性があります。しかし、あなたの応答に感謝し、私はそれがこの状況の誰かにとって役立つと信じています。
tdous 2014年

2

使用中のURLを確認します。

https://www.facebook.com/sharer/sharer.php?s=100&p[title]=EXAMPLE&p[summary]=EXAMPLE&p[url]=EXAMPLE&p[images][0]=EXAMPLE

この違いを確認してください:

  1. 共有URLは同じではありません。
  2. 文字列の順序が異なります。(これが影響するかどうかはわかりません)。

このURL文字列を使用します。

http://www.facebook.com/sharer.php?s=100&p[url]=http://www.example.com/&p[images][0]=/images/image.jpg&p[title]=Title&p[summary]=Summary

「タイトル」と「概要」セクションでは、次のurlencode();ようなphp関数を使用します。

<?php echo urlencode($detail->title); ?>

そして私のためにうまく働きます。


それはまだあなたの側で働いていますか?URLの例を試しても、タイトルと概要が表示されません。
vcarel 14

1
@vcarelこれはOpenGraphでのみ機能します。それが問題です。別の方法で別の回答を投稿してください。
ジョセフコリンズ

@JosephCollins違いに応じて:1. URL "hxxp://facebook.com/sharer.php"は "hxxp://facebook.com/sharer/sharer.php"にリダイレクトするだけです。下位互換性があると思います以前の共有機能で。2.フィールドの順序に違いはありません。念のために注文を試しましたが、それでも問題があります。私の最初の質問で述べたように、これは正しく機能しましたが、ある日、私たちの終わりに何の変化もありませんでした。これはFacebookのバグとして受け入れられているため、単なるURL形式の問題ではありません。しかし、彼らは確かにそれについて何かをしている彼らの甘い時間を取っています。
tdous

-1

&をURLで%26にエンコードすると、正しく動作します。テストと検証が完了しました。


他の回答でカバーされており、価値を追加するのに十分ではありません。
utechtzs '30 / 08/19
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.