Как опубликовать элемент ленты на стене друга через Graph API

Я делаю очень простое приложение для подарков на Facebook. Основная проблема здесь заключается в том, как уведомить пользователя, который не использует приложение, о том, что его друг отправил ему подарок?

Поскольку уведомления отключены в старом REST API и stream.publish не будут работать с друзьями, которые не разрешили публиковать сообщения на своей стене, я в замешательстве.

if (!empty($_REQUEST["ids"]) ) {
    $friends = ( isset($_REQUEST["ids"]) ) ? $_REQUEST["ids"] : 0;

    if (empty($_POST['giftname']) ) {
        $gname = '1.gif';
    } else {
        $gname = $this->input->post('giftname');
    }
    //$this->app_model->send_gift( $user, $friends, $gname,$facebook );
    //$this->app_model->send_gift( $user, $friends, $gname,$facebook );
    $to=$friends;
    $from=$user;
    $gift=$gname;

    $total_send=count($friends);

    for ($x=0; $x<$total_send; $x++ ) {

        $this->db->query("INSERT INTO gifts (`giftfrom`, `giftto`, `gname`) VALUES( $from, $to[$x], \"$gift\" )");

        try {
            // Send notification
            //$facebook->api_client->notifications_send($to[$x], 'sent you a gift using <a href="http://apps.facebook.com/tsaxikner/">Հայկական Նվերներ</a>. <a href="http://apps.facebook.com/tsaxikner/">Ստանալ Նվերը</a>.');

            // Publish feed story
            $feed_body = '<fb:userlink uid="'.$from.'" shownetwork="false"/>-ը նվեր է ուղարկել <fb:name uid="'.$to[$x].'"/>-ին  <a href="http://apps.facebook.com/tsaxikner/">Հայկական Նվերներ</a>-ի միջոցով.';

            $feed_body = 'Ստուգեք <a href="http://apps.facebook.com/tsaxikner/"> <fb:name uid="'.$to[$x].'" firstnameonly="true" possessive="true"/> Հայկական Նվերներ</a>.';

            //$facebook->api_client->feed_publishActionOfUser($feed_title, $feed_body);
            $facebook->api_client->make_wall_post($user,$to[$x],$feed_body);
            $facebook->api_client->notifications_sendEmail($user, 'You have a gift', $feed_body, $fbml);

            //$facebook_graph->api('' $message, null, null, $target_id );
        }
        catch(Exception $e) {
            echo $e->getMessage();
        }
    }
    // end of for
}

Я использую ФБМЛ


person MR.GEWA    schedule 30.09.2010    source источник
comment
Теперь мы можем отправлять сообщения на fb-wall с помощью php-sdk. Проверьте мой ответ.   -  person Somnath Muluk    schedule 29.02.2012


Ответы (4)


Я могу размещать сообщения на стенах друзей пользователя через PHP API.

Попробуй это :

$facebook->api('/[FRIEND_ID]/feed', 'post', array(
          'message' => 'test message',
          'link' => 'http://google.com',
          'name' => 'test name',
          'caption' => 'test caption',
          'description' => 'test long description',
      ));
person Somnath Muluk    schedule 21.02.2012
comment
Важно знать, что вам потребуются publish_actions, publish_stream разрешения. - person Tom Roggero; 10.08.2012
comment
@TomRoggero: Да. Нам нужны эти 2 разрешения для 2 постов. - person Somnath Muluk; 10.08.2012
comment
@MrGewa: Этот ответ решает вашу проблему? Если да, отметьте его принятым. Еще что вам нужно дальше. - person Somnath Muluk; 15.11.2012

Похоже, запрос был бы более подходящим (и эффективным) каналом для этого сообщения. . С запросом у вас есть дополнительное преимущество: уведомление, которое будет автоматически создано вместе с ваш запрос. Вы можете очень легко отправлять запросы, используя диалоговое окно запросов.

Однако, чтобы ответить на ваш первоначальный вопрос, если у вас есть разрешение "publish_stream" и пользователю, чей токен доступа вы используете, разрешено публиковать сообщения на стене получателя (это параметр конфиденциальности, который можно установить), все, что вам нужно сделать, это отправить запрос POST на:

https://graph.facebook.com/USER2ID/feed?link=YOURLINK

(Вы можете найти параметры для публикации новости в ленте здесь.) Если вы используете PHP SDK, убедитесь, что вы обновили его до версии 3 (это требуется, чтобы вы все равно обновились до 1 сентября).

person Jeff Bowen    schedule 21.07.2011

Это уже невозможно. Для этого вам нужно использовать диалоговое окно ленты новостей.

person Aravindh    schedule 06.09.2013

Нет возможности опубликовать напрямую на стене другого человека. Если вы хотите пригласить их в ваше приложение, вам придется использовать тег fbml request-form-submit. Вы можете найти это здесь: http://developers.facebook.com/docs/reference/fbml/request-form-submit. После того, как этот пользователь разрешил ваше приложение, вы можете опубликовать его на своей стене.

person Nathan Totten    schedule 05.10.2010
comment
Теперь мы можем отправлять сообщения на fb-wall с помощью php-sdk. Проверьте мой ответ. - person Somnath Muluk; 29.02.2012