У вас есть 2 варианта методов для достижения этого поведения.
- Используйте диалоговое окно Feed на целевой странице для своих пользователей. Это откроет окно Facebook, предлагающее вашим пользователям поделиться чем-то на своей стене. Этот метод требует также реализации JavaScript SDK .
- Использование PHP SDK и программная публикация истории фида в конечную точку
/me/feed
. (Как вы сделали в блоке try-catch
вашего примера кода).
Что касается публикации только при первом посещении пользователя, вам следует сохранить в вашей базе данных логическое значение. Когда вы создаете новую запись для нового пользователя в вашей базе данных, вы должны включить поле с именем что-то вроде first_visit
и заполнить его "истинным" значением.
Затем, когда вы обнаружите возвращающегося пользователя (это означает, что он уже находится в вашей базе данных), вы можете проверить, установлено ли в поле first_visit
значение «false». Тогда ваш пост через PHP SDK может быть результатом условного выражения для проверки значения first_visit
:
...
...
if ($first_visit == 'true'){
$result = $facebook->api('/me/feed', 'post', $vars);
}
Дополнительное решение (не требующее базы данных) может выглядеть примерно так:
Когда вы так ловко сгенерируете URL для входа в систему с помощью метода $facebook->getLoginUrl()
для ваших неавторизованных пользователей, вы можете добавить временный параметр GET
к параметру redirect_uri
. Что-то вроде:
$redirect_uri = 'https://apps.facebook.com/waffle-ville?new_user=true';
Тогда ваше условное выражение для публикации на стене пользователя будет выглядеть примерно так:
...
...
if ($_GET['new_user'] == 'true'){
$result = $facebook->api('/me/feed', 'post', $vars);
}
Не забудьте перенаправить пользователя обратно на исходный URL после того, как вы сделали сообщение:
var app_url = "https://apps.facebook.com/waffle-ville";
echo "<script type='text/javascript'>";
echo "top.location.href = app_url;";
echo "</script>";
Перенаправление также возможно с PHP:
$app_url = "https://apps.facebook.com/waffle-ville";
header("Location: {$app_url}");
IMO - Автоматическая публикация на стене пользователя немного раздражает. В настройках вашего приложения есть параметр, который называется Social Discovery
. Если для этого параметра установлено значение «включено», история создается автоматически, как только пользователь устанавливает ваше приложение. Я рекомендую оставлять сообщения на стене пользователя как дополнительное действие, инициированное пользователем.