-3

Facebook の JavaScript SDK を使用して、ユーザーが別のユーザーにリンクを送信できるようにしようとしていますFB.ui(data, callback)console.log( data )次の出力が得られます。

link
    "http://example.com/something/y3k62pg3t4"

method
    "send"

to
    "10000xxxxx(omitted)"

問題は、Facebook の送信ダイアログを正しく表示できることです (つまり、ダイアログが開き、友人の名前が事前に入力され、リンクが選択され、正しい URL、サムネイルなどが表示されます)。ただし、送信をクリックすると、コールバック関数が呼び出されることはなく、友人も PM を受信しません。

ただし、URL を google.com に変更すると、両方とも機能します。つまり、コールバックが呼び出され、PM も送信されます。

何が間違っているかについてのアイデアはありますか?

編集:

これは私が見つけたものです。example.com などのドメインにリンクされた Facebook アプリがある場合、そのアプリから example.com を除く任意のサイトへのリンクを送信できます。つまり、Facebook が導入したスパム対策のようです。

アプリがリンクされているのと同じドメイン名からリンクを送信できることを誰かが確認できますか、またはこの問題も発生するかどうかを確認できますか?

4

5 に答える 5

1

少し遠いショットですが、Facebook Debug toolを介してリンクを配置して、ファイルのメタデータをスクレイピングしたときに何が表示されるかを確認しましたか? エラーが表示される場合があります。

また、動的 DNS を使用している (私の場合は no-ip.com からの) 自分の内部サーバーを指すリンクの使用に問題がありました。したがって、それはおそらくリストから除外する別のものです.

幸運を。

- 編集 -

送信リクエストの作成に使用した JS コードは次のとおりです。

var obj = {
        method: 'send',
        to: '<test user ID>',
        name: 'My Title',
        caption: 'My Caption',
        description: 'My Message',
      link: 'http://apps.facebook.com/<app name>/',
      picture: 'http://<no-ip domain>/images/testpos.jpg'
    };

FB.ui(obj, callback);
于 2012-07-09T13:34:23.923 に答える
1

これらの2つのオプションを試してください

を。送信 URL を手動で呼び出す

https://www.facebook.com/dialog/send?app_id=YOUR_APP_ID&name=TITLE_OF_POST&link=LINK_FOR_DOMAIN&redirect_uri=LINK_FOR_DOMAIN

フィールドtoを自分に宛てて、友達を切り取ります。

成功した場合は、リダイレクト URI をヒットし、そうでない場合は受信トレイにメッセージを表示する必要があります。エラーが表示されます。

b. 応答をキャッチ

var data = {
      method: 'send',
      to: 'YOUR_ID',
      name: 'My Title',
      link: 'YOUR_DOMAIN',
    };

function requestCallback (response) {
    console.log(response);
}

FB.ui(data, requestCallback);

成功すると、空の配列が取得され、受信トレイにメッセージが表示されます。そうでない場合は、オブジェクトで返されたエラー メッセージを取得する必要があります。

これら 2 つのオプションの間で、アプリケーションで正しく設定されていないものを特定できるはずです。

于 2012-07-09T17:34:27.243 に答える
0

Facebook BUG の可能性があるようです。私のアプリケーションを使用して、私は

POST https://www.facebook.com/dialog/send 500 (Internal Server Error)

この問題で購読できるバグは次のとおりです : https://developers.facebook.com/bugs/426059697438651

于 2012-07-13T09:25:52.840 に答える
0

ブロックされているドメインがいくつかあります。たとえば、すべての.TKドメイン(http://dot.tk友人に送信してみてください)(私はすでに問題を抱えています)はスパムとしてマークされており、メッセージ内でそれらを送信しようとすると、メッセージは-あなたの場合のように、送信ダイアログを使用 - 拒否されました。

Facebook も Location-header-redirects に従いますが、これが問題です。URL 短縮サービスだけを使用することはできません。

スパムとしてマークされないようにするには、ページのクローキングを利用できます。リダイレクトに必要なのは、次のスクリプトを配置できるホワイトリストに登録された 1 つのドメインだけです。

<?php
$UserAgent=$_SERVER['HTTP_USER_AGENT']; //The user agent header
$URL=$_GET["URL"]; //The URL to be redirected to
if(preg_match("#(^facebookexternalhit/|\\(\\+http://(www\\.|[a-zA-Z0-9-]{1,}\\.)?facebook\\.com($|/))#i", $UserAgent)) //Is it a facebook agent?
{
    //Deliver content prepared for facebook
    echo '<html>
    <head>
        <meta name="og:image" content="http://example.com/logo.png" />
        <meta name="og:title" content="Page title for facebook" />
        <meta name="og:description" content="Any description of your page." />
        <meta name="og:url" content="http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'" />
    </head>
    <body>
    </body>
    </html>';
    exit();
}
else
{
    //This is not a facebook agent, redirect client to $URL
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: ".$URL);
    exit();
}
?>

もう 1 つの可能性は JavaScript のリダイレクトですが、これはすべてのユーザーに対して機能するわけではありません。

編集:私はあなたのコードを使用しましたが、ホワイトリストに登録されたページでは問題なく動作します。

于 2012-07-15T23:15:42.857 に答える
0

fb.ui 送信操作で FB アプリの URL を参照しようとすると、同様の問題が発生しました。

原因は、FB が Web ページの古いコピーを使用していた (エラーが含まれている) ことでした。

したがって、テストを行っている場合は、FB が Web ページの最新のコピーを使用していることを確認してください (そして、リンク先 URL のコンテンツを変更し続けます)。

https://developers.facebook.com/tools/debugで FB Debugger を介して URL をもう一度渡すことで、これを実現できます。

于 2012-08-15T19:05:25.287 に答える