Публикация Stream из приложения - для не авторизованного пользователя, использующего Graph API, php SDK - PullRequest
0 голосов
/ 19 февраля 2012

Использование разрешения Graph api publish_stream: вместе с разрешением offline_access:

Как описано здесь и здесь .Однако по какой-то причине происходит одно из следующих двух событий:

Я пытаюсь опубликовать сообщение для пользователя Facebook, который еще не вошел в систему, после действия пользователя, который в данный момент вошел в систему (например, сообщает пользователю# 1, что пользователь # 2 посетил свою ферму в farmville, но пользователь # 1 не вошел в систему, а пользователь # 2 - и они не обязательно друзья).

Когда я попробовал это, используя следующий код,сообщение не было создано, когда пользователи № 1 и № 2 не были друзьями (первая проблема), а когда они были друзьями, сообщение создавалось, но казалось, что пользователь № 2 разместил его на стене пользователя № 1 (вторая проблема -это НЕ то, что я пытаюсь сделать, я хочу, чтобы это было анонимно).Посмотрите первый код, который я использовал:

    $post_id = $facebook->api('/' . $user1_id . '/feed/', 'post', array(
    'message' => 'Someone just visited your farm',
    'link' => 'http://example.com',
    'picture'  => 'http://example.com/img/picture.jpg',
    'caption' => 'Visit farms!'
    ));

Итак, я попытался использовать токен доступа пользователя # 1, который он дал мне при входе в систему, и приложение должно иметь возможность публиковать сообщения наих стены, даже когда они в автономном режиме (даже без разрешения offline_access - см. здесь документация Facebook: «Вы можете публиковать ... не требуя offline_access». В любом случае, когда я добавляю access_token в массив какпараметр (см. код ниже), сообщение не создается вообще:

    $post_id = $facebook->api('/' . $user1_id . '/feed/', 'post', array(
            'access_token' => $user1_access_token,
    'message' => 'Someone just visited your farm',
    'link' => 'http://example.com',
    'picture'  => 'http://example.com/img/picture.jpg',
    'caption' => 'Visit farms!'
    ));

Что мне делать?

усиление, я просто пытаюсь опубликовать на стене пользователя, котораяНЕ вошел в систему, но дал мне разрешение publish_stream, сообщение от приложения, а не от любого другого пользователя, сообщающее этому пользователю, что кто-то (анонимно) "посетил их ферму" (или создал какое-либо действие, связанное с ним).

Спасибо всем.

Ответы [ 2 ]

1 голос
/ 20 февраля 2012

Что касается того, «кто-то сделал что-то в игре, и теперь ваша очередь», я считаю, что вы ищете запросы 2.0, в частности, сообщение «Приложение для пользователя».

от: https://developers.facebook.com/docs/requests/

Запросы от приложения к пользователю могут использоваться для повторного вовлечения пользователя в ваше приложение и могут быть отправлены только пользователям, которые установили приложение. Например, уведомление пользователя о том, что что-то изменилось с момента его последнего посещения, «10 ваших друзей сейчас в сети».

Приложение к запросу пользователя отправляется через Graph API, для получения дополнительной информации см. документацию по заявкам. Запросы приложения к пользователю доступны только для Приложения холста, а не веб-сайты, так как принятие запроса направит пользователя на URL-адрес страницы холста приложения, отправившего запрос.

от: https://developers.facebook.com/docs/guides/canvas/

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

1 голос
/ 19 февраля 2012

это просто рекомендация, и я не уверен, что это ответ Удалите все сеансы (или используйте ваш браузер в приватном режиме - для Firefox) & затем посетите страницу отправителя Как это

example.com / postfarm.php

может быть, когда вы посещаете страницу, обычно приложение получает ваш access_token и пытается опубликовать как вы

PS: лучший способ

используйте этот код, и вам больше не нужно уничтожать сессии

    include_once ('src/facebook.php');/// include sdk
    ////// config The sdk
        @ $facebook = new Facebook(array(
        'appId'  => 'XXXXXXX',
        'secret' => 'XXXXXXXXXXXXXX',
         ));
$facebook->destroySession();
    try{        
    $post=$facebook->api('USER_ID/feed/','POST',array(
    'message' => '$message',
    'link'=>'http://apps.facebook.com/xxxxxxx/link.php?link=',
    'picture'=> 'XXXXXXXXXX',
    'name'=>'XXXXXX',
    'description'=>'yes',

    ));
    }
    catch(FacebookApiException $e) {
    echo $e->getType();
    echo '<br />';
    echo $e->getMessage();
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...