0

それほど複雑ではないことを願っていますが、Facebook は API を大幅に変更したため (パーミッションなどに関して)、あまり役に立たない多くの古い情報を見つけました。状況は次のとおりです。

  1. ページタブ付きのFacebookページを手に入れました
  2. そのページに関連付けられているFacebookアプリを(タブを介して)取得しました。
  3. 私自身の WebApp は、Facebook PHP-SDK を介してページの壁に投稿し、各ユーザーはストリームでニュースを確認します。

質問: そのアプリを介してユーザーのタイムラインに投稿するにはどうすればよいですか?

これまでの私のコード(ページの壁に投稿する)

require 'facebook.php';
$facebook = new Facebook(array(
    'appId'  => 'xxxxxxxxxxxxxx',
    'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxx',
));
$loginUrl = $facebook->getLoginUrl();
$user = $facebook->getUser();

$page_id = 'xxxxxxxxxxxxxxxxxxxx';
$page_info = $facebook->api("/$page_id?fields=access_token");
if( !empty($page_info['access_token']) ) {
    $args = array(
        'access_token'  => $page_info['access_token'],
        'message'       => "Neuer Test!"
    );
    $post_id = $facebook->api("/$page_id/feed","post",$args);
} else {
    $permissions = $facebook->api("/me/permissions");
    if( !array_key_exists('publish_stream', $permissions['data'][0]) || 
        !array_key_exists('manage_pages', $permissions['data'][0])) {
        header( "Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream, manage_pages")) );
    }

}

これは正常に機能していますが、メッセージは、ページを気に入ったユーザーのタイムラインでは利用できず、自分のストリームでのみ利用できます。彼らのタイムラインに公開することは可能ですか?

4

1 に答える 1

0

まだ助けが必要かどうかわかりません。念のため、このコードは私にとってはうまくいきます。ログインしているユーザーがいると仮定します。ユーザーのタイムラインに投稿します。Facebook には Platform TOS があるため、このコードは私が信じている許可を得ていません。これを試してください:

     require_once('libs/facebook.php');

    // init new facebook class instance with app info (taken from the DB)
    $facebook = new Facebook(array(
        'appId' => 'your app id here',
        'secret' => 'your app secret here'
    ));



    $fb_user_id = $facebook->getUser();
    $location = "". $facebook->getLoginUrl(array('scope' => 'publish_stream'));

    if ($fb_user_id) {
        try {
            $fb_user_profile = $facebook->api('/me');   

        } catch (FacebookApiException $e) {
            $fb_user_id = NULL;

            print '<script language="javascript" type="text/javascript"> top.location.href="'. $location .'"; </script>';
            die();
        }
    } else {

        print '<script language="javascript" type="text/javascript"> top.location.href="'. $location .'"; </script>';
        die();
    }


    $ret_obj = $facebook->api('/me/feed', 'POST',
                            array(
                            'link' => 'www.google.com',
                            'message' => 'Google me!'
                                             ));
于 2013-11-15T22:29:46.417 に答える