web-dev-qa-db-ja.com

フラッシュアプ​​リからFacebook共有リンクのカスタムタイトル/画像/説明が必要な場合

可能性のある複製:
Facebook Sharerはどのように画像を選択しますか?

私は、さまざまな速度で運転しているときに潜在的な交通事故を示すフラッシュアプ​​リを作成しています。ユーザーがこの情報をFacebookで共有できるようにします。ただし、これには、何らかの方法でFacebookに表示されるテキストをカスタマイズできることが必要です。

(Flashアプリ自体から)空白のウィンドウで開くURLを作成しています。生成されたメッセージをtパラメーターとして、uパラメーターとtパラメーターを指定します。しかし、これは常にページのタイトルによって上書きされるようです。 HTMLコードからタイトルタグを省略すると、ファイル名が使用されます(指定されたタイトルも上書きされます)。

 http://www.facebook.com/sharer.php?u=http://espentokerud.com/face/addiste.html&t=test; 

また、URLをURLエンコードしてみましたが、役に立ちませんでした。

 http://www.facebook.com/sharer.php?u=http%3a%2f%2fespentokerud.com%2fface%2faddiste.html&t=test; 

また、addthis APIを使用してみましたが、同じ欠点があります。面白いことに、swfを投稿すると、タイトルと説明をカスタマイズでき、スクリーンショットを指定することもできます。しかし、swfを投稿しない場合、これは無視されるようです。

Htmlページでメタタグを使用してサムネイル画像、タイトル、説明を指定できることは承知していますが、このコンテンツの一部はフラッシュアプ​​リ内の計算に基づいている必要があります。

54
Ezop

2016アップデート

Sharing Debugger を使用して、問題を特定します。

Facebookをフォローしていることを確認してください ベストプラクティスの共有

Open Graph Markup を正しく使用していることを確認してください。

元の回答

ここですでに述べたことに同意しますが、 Facebook開発者サイトのドキュメントごと 、次のメタタグを使用することをお勧めします。

<meta property="og:title" content="title" />
<meta property="og:description" content="description" />
<meta property="og:image" content="thumbnail_image" />

メタタグで目標を達成できず、URL埋め込みバージョンが必要な場合は、@ Lelis718の 以下の回答 を参照してください。

65
Snekse

このサイトには解決策があると思うので、今すぐテストします。 facebookがshare.phpのパラメーターを変更したようです。そのため、共有ウィンドウのテキストと画像をカスタマイズするには、パラメーターを「p」配列に入れる必要があります。

http://www.daddydesign.com/wordpress/how-to-create-a-custom-facebook-share-button-for-your-iframe-tab/

見てみな。

29
Lelis718

私は一週間前に同じ問題を抱えていました。

まず、URLのパラメーター文字列の前にアンパサンドが付いていることに気付きましたが、パラメーター文字列を開始するには、代わりに疑問符を付け、その後に各追加パラメーターの間にアンパサンドを付ける必要があります。

ここで、次のように、URLをエスケープする必要がありますが、URLに渡すURLパラメーター(共有でコンテンツを提供するために必要なタイトルまたはその他のコンテンツ)も二重エスケープする必要があります。

var myParams = 't=' + escape('Some title here.') + '&id=' + escape('some content ID or any other value I want to load');
var fooBar = 'http://www.facebook.com/share.php?u=' + escape('http://foobar.com/superDuperSharingPage.php?' + myParams);

次に、上記のリンクされたsuperDuperSharingPage.phpを作成する必要があります。これは、希望する動的なタイトル、説明、画像コンテンツを提供する必要があります。このようなもので十分です:

<?php
    // get our URL query parameters
    $title = $_GET['t'];
    $id = $_GET['id'];
    // maybe we want to load some content with the id I'll pretend we loaded a
    // description from some database in the sky which is magically arranged thusly:
    $desciption = $databaseInTheSky[$id]['description'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title><?php echo $title;?></title>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <meta name="title" content="<?php echo $title;?>" />
  <meta name="description" content="<?php echo $desciption;?>" />
  <!-- the following line redirects to wherever we want the USER to land -->
  <!-- Facebook won't follow it. you may or may not actually want || need this. -->
  <meta http-equiv="refresh" content="1;URL=http://foobar.com" />
</head>
<body>
  <p><?php echo $desciption;?></p>
  <p><img src="image_a_<?php echo $id;?>.jpg" alt="Alt tags are always a good idea." /></p>
  <p><img src="image_b_<?php echo $id;?>.jpg" alt="Make the web more accessible to the blind!" /></p>
</body>
</html>

これがあなたのために働くかどうか私に知らせてください、それは本質的に私のためにしたことです:)

4
defines

私はものを表示するJoomlaモジュールを持っています...そしてページのタイトルメタ説明ではなくFacebookでそのようなものを共有できるようにしたいので、私の回避策は実行されるサーバーに秘密の.phpファイルを持つことですFBを検出したとき

$_SERVER['HTTP_USER_AGENT']

if($_SERVER['HTTP_USER_AGENT'] != 'facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)') {
    echo 'Direct Access';
} else {
    echo 'FB Accessed';
}

joomlaモジュールから共有したいアイテムのタイトルとメタ記述で特定のページをフォーマットするURLで変数を渡します...

name="fb_share" share_url="MYURL/sharer.php?title=TITLE&desc=DESC"

お役に立てれば...

2
petsoukos

私は実際に同様の問題を抱えています。複数のラジオボタンがあるページがあります。各ボタンは、変更時にJavaScriptを介して、ページのタイトルと説明のメタタグを設定します。

たとえば、ユーザーが最初のボタンを選択すると、メタタグは次のように表示します。

<meta name="title" content="First Title">
<meta name="description" content="First Description">

ユーザーが2番目のボタンを選択すると、メタタグが次のように変更されます。

<meta name="title" content="Second Title">
<meta name="description" content="Second Description">

... 等々。 Firebugを介してコードが正常に機能していることを確認しました(つまり、これら2つのタグが適切に変更されたことがわかります)。

どうやら、 Facebook Share は、ページのロード時に使用可能なタイトルと説明のメタタグのみを取り込みます。これらの2つのタグのページロード後の変更は完全に無視されます。

誰もこれを解決する方法についてアイデアを持っていますか?つまり、ページの読み込み後に変更された最新の値をFacebookに強制的に取得させることです。

2
user318983

できません、サポートしていません。

なぜこれらの計算を行う必要があるのか​​、フラッシュアプ​​リ内でのみ確認する必要がありますか?

Flashアプリから取得したメタデータに明確に関連するURLに移動する必要があります。それ以外の場合、フラッシュアプ​​リは、ヒットしたURLに応じて値を取得する方法を認識します。

オプションは次のとおりです。

  • ページで計算:ページを提供するとき、サーバーで同じ計算を行い、ページのメタデータでタイトルなどを送信する必要があります。
  • クエリ文字列のメタデータをサイトに送信する:計算を本当にサーバーから外す必要がある場合、代替トリックは、ユーザーがクリックしてサイトにアクセスするURLにメタデータを明示的に設定することですフェイスブック。ページを処理するときは、メタデータセクションにコピーして戻すだけです(適切にエンコードすることを忘れないでください)。 URLサイズの制限により、明らかに制限されています。
  • クエリ文字列の計算結果をサイトに送信します:これらの計算がメタデータで使用される数個の数値を与える場合、ユーザーがクリックするURLのクエリ文字列にそれを含めることができますサイトに戻ります。 URLサイズの問題が発生しない可能性が高くなります。

なぜこれが賛成ですか?それは間違っています。できます-ISは、カスタムのタイトル、説明、および画像を共有に追加するためにサポートされています。私はいつもそれをします。 –ダスティン・ファインアウト3時間前

OPは、ページからそれを提供できることは既に知っていたが、値をFacebookに直接渡すことを(ターゲットページを介さずに)したいと非常に明確に述べました。

また、この問題を回避するために3つの異なるオプションを提供したことに注意してください。そのうちの1つは、後で回答として投稿したものです。あなたのオプションは、OPがそれをしようとしていた方法ではなく、Facebookの制限のための単なる回避策です。

最後に、ちょうど私がしたように、URLサイズの制限に簡単に達することができるので、特定のソリューションに欠陥があることに言及する必要があります。

0
eglasius