1

この件に関する他の多くのトピックを読みましたが、役立つものは見つかりませんでした。

私がしたいこと

Web サイトに記事を追加したら、Twitter や Facebook に更新情報を投稿したいと思います。Twitter では機能していますが、Facebook で問題が発生しています。

OAuth を使用する facebook.php をダウンロードしました。

私の問題

簡単なテキストを投稿すると、問題なく動作し、ページによって投稿されたとおりに表示されます。しかし、サムネイル、リンク、キャプション、説明を含むテキストを投稿しようとすると、個人アカウントがこの更新をページの壁に投稿しているかのように投稿されます。

単純なテキストのコードは次のとおりです (上記の acces_token を要求しました)。

$post = array('access_token' => $token, 'message' => 'My message');
try{  
$res = $facebook->api('/mypage/feed','POST',$post);  
print_r($res);  

} catch (Exception $e){  

    echo $e->getMessage();  
}

間違ったコードは次のとおりです。

$post = array('access_token' => $token,
                'message' => 'My message',
                'picture' => 'http://www.website.com/picture.jpg',
                'link' => 'http://www.website.com',
                'caption' => 'test caption',
                'description' => 'test description', 
                'from' => array('name' =>'Page name', 'id' => 'page id'), 
                );  


try{  
$res = $facebook->api('/mypage/feed','POST',$post);  
print_r($res);  

} catch (Exception $e){  

    echo $e->getMessage();  
}

Facebook API は十分に文書化されていませんが、この質問をしないようにあらゆる場所を検索しました..しかし、解決策が見つかりません。

助けてくれてどうもありがとう。

ベンジャミン

4

3 に答える 3

1

次のアクセス許可 (publis_stream、manage_pages、offline_access) と access_token があることを願って、次のコードを試してください。

                <?php
            /**
             * Edit the Page ID you are targeting
             * And the message for your fans!
             */
            $page_id = 'PAGE_ID';
            $message = "I'm a Page!";


            /**
             * This code is just a snippet of the example.php script
             * from the PHP-SDK <http://github.com/facebook/php-sdk/blob/master/examples/example.php>
             */
            require '../src/facebook.php';

            // Create our Application instance (replace this with your appId and secret).
            $facebook = new Facebook(array(
              'appId'  => 'app_id',
              'secret' => 'app_secret',
            ));

            // Get User ID
            // $user supposed to be page admin
            $user = $facebook->getUser();

            if ($user) {
              try {
                $page_info = $facebook->api("/$page_id?fields=access_token");
                if( !empty($page_info['access_token']) ) {
                    $args = array(
                        'access_token'  => $page_info['access_token'],
                        'message'       => $message ,
                        'name'         => 'My Wall Post Header/Title Here',
                        'caption'      => 'Small caption here',
                        'link'         => 'http://www.mywebsite.org',
                        'description'  => 'Wall Post Details Here',
                        'picture'      => "http://www.mywebsite.org/images/logo.gif",           
                    );
                    $post_id = $facebook->api("/$page_id/feed","post",$args);
                }
              } catch (FacebookApiException $e) {
                error_log($e);
                $user = null;
              }
            }

            // Login or logout url will be needed depending on current user state.
            if ($user) {
              $logoutUrl = $facebook->getLogoutUrl();
            } else {
              $loginUrl = $facebook->getLoginUrl(array('scope'=>'manage_pages,publish_stream'));
            }
            ?>
于 2012-06-10T19:48:56.783 に答える
0

これはおそらくそうではありませんが、内部ドメイン名に解決される画像 URL を使用していないことを確認してください (つまり、ローカルホストファイルの更新によって)。多くのテストを行った後 (JS で FB.UI 呼び出しを使用していますが)、ドメイン名が内部を指している場合、外部からも利用できる場合でも(これは私を投げたビットです)、エラーが発生する可能性があることがわかりました。これは、Picture 引数でのみ問題になるようです。

幸運を!

于 2012-06-10T20:10:28.103 に答える
0

og:tagsFacebook が取得する画像、説明、タイトルを認識できるように、ページにOpen Graph を実装する必要があります。

https://developers.facebook.com/docs/opengraphprotocol/

彼らはこのように見えます -

<meta property="og:title" content="The Rock"/>
<meta property="og:type" content="movie"/>
<meta property="og:url" content="http://www.imdb.com/title/tt0117500/"/>
<meta property="og:image" content="http://ia.media-imdb.com/rock.jpg"/>
<meta property="og:site_name" content="IMDb"/>
<meta property="fb:admins" content="USER_ID"/>
<meta property="og:description"
      content="A group of U.S. Marines, under command of
               a renegade general, take over Alcatraz and
               threaten San Francisco Bay with biological
               weapons."/>

必要なメタ タグを実装したら、便利なFacebook URL Debuggerを使用して作業をテストできます。問題があるかどうか、その正確な内容、およびそれらを修正する方法を教えてくれます。

于 2012-06-10T19:38:06.863 に答える