Использование разрешения 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's документация: «вы можете публиковать … без необходимости использования 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, сообщение из приложения, а не какой-либо другой пользователь, сообщив этому пользователю, что кто-то (анонимно) «посетил свою ферму», (или создали некоторые связанные с ними действия).
Всем спасибо.
это всего лишь рекомендация, и я не уверен, что это будет ответ. Уничтожьте все сеансы (или используйте свой браузер в приватном режиме – для 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(); }
Для «кто-то сделал что-то в игре, и настала ваша очередь», я считаю, что вам нужны запросы 2.0, в частности, сообщение «приложение для пользователя».
от: https://developers.facebook.com/docs/requests/
Приложение для запросов пользователей может использоваться для повторного привлечения пользователя в ваше приложение и может быть отправлено только пользователям, которые установили приложение. Например, уведомив пользователя о том, что что-то изменилось со времени их последнего посещения, «10 из ваших друзей теперь в сети».
Приложение для запроса пользователя отправляется через API-интерфейс Graph, для получения дополнительной информации см. Документы apprequests. Приложение для запросов пользователей доступно только для приложений Canvas, а не для веб-сайтов, так как прием запроса направит пользователя на URL страницы холста приложения, отправившего запрос.
от: https://developers.facebook.com/docs/guides/canvas/
Запросы, созданные приложением. Эти запросы могут быть инициированы и отправлены только пользователям, которые разрешили ваше приложение. Вы должны использовать эти запросы, чтобы обновить количество закладок, чтобы побудить пользователя повторно участвовать в приложении (например, ваш друг закончил свой ход в игре, и теперь ваша очередь).