Как разместить элемент фида в стене друга через Graph API - PullRequest
1 голос
/ 30 сентября 2010

Я делаю очень простое приложение для подарков на 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
}

Я использую FBML

Ответы [ 4 ]

7 голосов
/ 21 февраля 2012

Я могу публиковать сообщения на стенах друзей пользователя через 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',
      ));
4 голосов
/ 21 июля 2011

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

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

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

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

1 голос
/ 06 сентября 2013

Это больше невозможно. Для этого вам нужно использовать Диалог подачи .

0 голосов
/ 05 октября 2010

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

...