Опубликовать на стене Facebook со скриптом, с автоматическим входом - PullRequest
0 голосов
/ 03 мая 2011

Я могу публиковать сообщения на своей странице на Facebook, когда вошел в систему с помощью PHP-скрипта (и Graph API). У меня есть страница новостей на моем главном веб-сайте, и я хотел бы публиковать новостные сообщения в Facebook, поскольку они публикуются на моем сайте (что, я думаю, связано с тем, сколько людей используют API).

Я предоставил offline_access и publish_stream моей учетной записи FB для приложения FB.

Если я закрою сеанс FB и попытаюсь опубликовать сообщение со своей страницы новостей, Facebook откроет страницу входа. Я предоставил доступ, поэтому я не знаю, что еще мне не хватает.

1 Ответ

0 голосов
/ 12 июня 2011

Если я правильно понимаю ваш вопрос, я думаю, что я только что решил ту же проблему.Я не мог решить это полностью, используя API графа, но комбинация API api и оставшихся API api сделала свое дело.После того как вы дадите разрешение своему приложению публиковать на стене своей страницы в Facebook, следующий код должен делать то, что вы хотите:

$url = "https://graph.facebook.com/oauth/access_token";
$client_id = "XXXXXXXXXXXXXX";
$client_secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$postString = "client_id=$client_id&client_secret=$client_secret&type=client_cred";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_FAILONERROR, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postString);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
$token = curl_exec($curl);
curl_close($curl);

$message = rawurlencode($description.'. Notes:'.$notes);
$url = "https://api.facebook.com/method/stream.publish";
$postString = "message=$message&uid=XXXXXXXXXXXXX&$token";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_FAILONERROR, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postString);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
$response = curl_exec($curl);
curl_close($curl);

Несколько вещей, которые стоит отметить.
1. Идентификатор пользователя в остальных API$ postString - это идентификатор страницы Facebook.Вам не нужен target_id, потому что когда uid относится к странице, он может публиковать только для себя.
2. Ваше сообщение $ должно быть в формате rawurlencoded, потому что это форма, принятая остальными API.
3. Это будетпубликовать на своей странице в качестве приложения, а не как пользователь, который сделал сообщение на ваш сайт.Для этого вам необходимо получить разрешение publish_stream от всех ваших пользователей.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...