11

これは1週間以上うまく機能しています。

FB.ui({
  method: 'send',
  to: connectionid,
  name: subject,
  picture: staticurl + 'images/logoformysite.png',
  link: homeurl + '/' + username + '/something=' + var1 +'&somethingelse=' + encodeURI(var2) + '&evenmore=' + encodeURI(var3),
  description: invitemessage,
});

先週、URL が Facebook ドメイン内にある場合、Facebook がそれをブロックするというエラーが最初に発生しました。それを修正したところ、画像とリンクの両方が Facebook ドメインに属さず、私のサイトからのものになりました。しかし、これは今日から始まり、何も変わっていません。断続的です。

An error occurred. Please try again later.

API Error Code: 100 API Error Description: Invalid parameter Error Message: 'link' is invalid.

同じユーザーに送信している場合でも、なぜ機能するのか、機能しないのかは明確ではありません。アナウンスを見逃したのかな。しかし、少なくとも一貫して失敗することを願っていますが、そうではありません。


更新: ダイアログで設定しているリンクをページ上でグローバルに設定する方法がわかりません。メッセージの受信者に間違ったリンクが送信されます。上記が新しいオープングラフの世界でどのように機能するかの例を見ることは本当に役に立ちます.

回答 2013 年 8 月 12 日

この問題は、URL が動的であり、毎回強制キャッシュが必要であることが原因でした。「 https://developers.facebook.com/tools/debug/og/object 」への ajax 呼び出しを行って更新し、送信ダイアログを起動します。

4

3 に答える 3

9

私は同じ問題を抱えていて、先週から機能しなくなりました。

これが私の解決策です:

Facebook デバッガーに移動し、URL を追加します。[デバッグ] をクリックして、Facebook によって表示されるすべての警告を修正します。

私を修正するにog.urlは、ページにメタタグを追加する必要がありました。この値は、共有したい値とまったく同じでなければなりません (リダイレクトなし)。その後、Facebook から次の通知 (アラート) が送られてきました。

アプリ XXX は、ストリーム ポスト URL のセキュリティ移行に準拠しています。これ以上のアクションは必要ありません。

もう一度リンクを共有してみてください。FB.uiこれで、投稿にog値が自動的に表示されます。

注: Facebook の 10 月の重大な変更ogでは、カスタム パラメーターの代わりにこれらのメタが自動的に使用されるため、重大FB.uiな変更を有効にして準備を整え、コードから名前/画像/説明を削除することができます。

更新: 上記の内容が正しく実装されていても、この問題は再び発生する可能性があります。

あなたの場合は、Facebook にページを「スクレイピング」するよう強制する必要があるためです。このプロセスは、Facebook オブジェクト デバッガーを使用するか、リンクをタイムラインまたはプライベート メッセージにコピー アンド ペーストすると、Facebook によって自動的に行われます。JavaScript SDK を使用する場合は、Facebook にページのインデックス作成とキャッシュを依頼する必要があります。

これは、JavaScript SDK に関連する Facebook のドキュメントには記載されていません (運が良ければ) ので、この信じられない問題を見つけるために私が失ったすべての時間を節約するために (Facebook はあなたのリンクが無効であるとだけ言ったことを思い出してください)、詳細を見つけることができます。このページで。

Graph API を使用して、新しく作成したページを強制的に Facebook にスクレイピングしようとしました。言及されていないが同じ結果が得られた 2 番目の方法は、Facebook Object Debugger ページにリクエストを送信し、URL にページ リンクを追加することです (例: https://developers.facebook.com/tools/debug/og/object?q=YourPageUrlHere)。これを行うと、今度は Facebook がページをスクレイピングし、リンクを Facebook API と共有できるようになり、すべてが機能するようになります。

于 2013-08-05T09:55:10.300 に答える
5

FB UI ダイアログを介して同じ URL を送信しようとする前に、Facebook に最初に URL をスクレイピングするように強制したときに、これが修正されたことを確認できます。

サンプルコード:

FB.api('https://graph.facebook.com/', 'post', {
    id: '[URL]',
    scrape: true
}, function(response) {
    FB.ui({
        method: 'send',
        name: '[name]',
        picture: '[Picture URL]',
        link: [URL]',
        description: '[description]'
    });
});
于 2013-08-13T19:39:04.403 に答える
0

Facebook があなたの URL を要求したときに、決して転送されないことを確認してください。

これを行う方法は、すべての適切な要素を含む独自の特別ページを facebook に表示することです。

以下に例を示します (php + symfony 1.4 に基づいたものです):

<?php
    if(preg_match('/facebookexternalhit/i', $request->getHttpHeader('User-Agent')))
    { ?>
        <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
      <head>
        <meta property="fb:app_id" content="<?php echo sfConfig::get('app_facebook_app_id'); ?>" />
        <meta property="og:url" content="<?php echo sfContext::getInstance()->getRequest()->getUri(); ?>" />
        <meta property="og:title" content="<?php echo $title; ?>" />
        <meta property="og:description" content="<?php echo $description; ?>" />
        <meta property="og:image" content="<?php echo $image; ?>" />
      </head>
      <body>
        hello Facebook!
      </body>
    </html>
    <?php
    }
?>
于 2013-08-05T15:13:30.490 に答える