0

昨日、アプリケーションの設定を変更し、「新しいデータ権限」と「新しい SDK」を有効にしました。

その後、ユーザーのウォールにメッセージを投稿する機能が機能しなくなりました。私のウェブサイトでは、ユーザーは facebook API (Graph) を使用してログインし、ウォールにメッセージを投稿できます。

これは正常に動作していた私の古いコードです:

function publish_with_permission(パーミッション、アクションリンク、添付ファイル) {
  FB.ensureInit(関数() {
    FB.Connect.requireSession(関数(){
        //この権限がユーザーにすでに付与されているかどうかを確認します
        FB.Facebook.apiClient.users_hasAppPermission(権限、
        関数(結果) {
            // オフライン許可を促す
            もし (結果 == 0) {
                // Facebook の許可ダイアログを表示します
                FB.Connect.showPermissionDialog(権限、
                関数(結果){
                    if (!結果) {
                       FB.Connect.streamPublish('', attachment, action_links, null, "Post this:", jscallback);
                    } そうしないと {
                    // 許可が与えられ、Facebook ダイアログなしで投稿
                       FB.Connect.forceSessionRefresh(関数() {
                       FB.Connect.streamPublish('', attachment, action_links, null, "これを投稿:", jscallback,true);
                    });
                }
            }、真、null);
        } そうしないと {
            // 許可済み、突然投稿
            // Facebook ダイアログなし
            FB.Connect.streamPublish('', attachment, action_links, null, "これを投稿:", jscallback,true);
            }
        });
    });
});
}

関数がハングするだけで、何も起こりません。このフォーラムで検索し、この投稿を見つけました

関数 fb_publish() {
     FB.ui(
       {
         メソッド: 'stream.publish',
         message: 'メッセージはこちら',
         添付ファイル: {
           name: 'Nom ici.',
           キャプション: 'ここにキャプション。',
           説明: (
             「ここに説明」
           )、
           href: 'URL はこちら'
         }、
         アクションリンク: [
           { text: 'コード', href: 'アクション URL はこちら' }
         ]、
         user_prompt_message: 'ここに個人的なメッセージ'
       }、
       関数 (応答) {
         if (応答 && response.post_id) {
           alert('投稿が公開されました');
         } そうしないと {
           alert('投稿は公開されませんでした。');
         }
       }
     );  
  }

これは機能しますが、2 つの問題があります。1) ユーザーがグラフ API を使用して初めてログインし、ウォールに公開するための拡張アクセス許可を付与した場合でも、このメソッドは毎回ユーザーに許可するかどうかを尋ねます。 1つはそれをしませんでした。2) この方法では、ユーザーがコメントを追加することもできます。これも必要ありません。

以前に許可を与えたので、再度明示的に許可を求めることなく、ウォールにシームレスに公開したいと考えています。

私はPHPを使用しています - ヒントをいただければ幸いです ありがとう

4

3 に答える 3

0

これがあなたが探しているものだと思います。

アクセス許可を前もって取得します。次に、Javascript SDK ではなく Graph API を使用してストリームに公開します。(これは公開中にユーザーをまったく関与させず、PHP コードのサーバー側で発生します)

于 2010-06-30T19:19:48.223 に答える
0

Javascriptを使用してそれを行う方法を理解できなかったので、代わりにphpを使用しました

試す
{
   $statusUpdate = $facebook->api('/me/feed', 'post', array('message'=> 'ステータス メッセージの例', 'cb' => ''));
}
キャッチ (FacebookApiException $e)
{

}


それが誰かを助けることを願っています

于 2010-07-01T03:39:44.233 に答える
0

このコードを試して壁に投稿してください

FB.ui(
            {
                method: 'feed',
                name: 'NAME',
                link: 'LINK OF THE WEBSITE OR PAGE',
                picture: 'IMAGE_URL IF YOU NEED IT',
                caption: 'Reference Documentation',
                description: "DESCRIPTION"
            },
            function(response) {
                if (response && response.post_id) {
                    alert('Post was published.');

                } else {
                    alert('Post was not published.');
                }
            }
        );

このコードは私のアプリで動作します。それがあなたの問題も解決することを願っています。

于 2011-12-06T11:19:47.990 に答える