Получить права пользователя и публиковать сообщения на стене из настольного приложения?

Я пытаюсь создать приложение facebook, в котором пользователь будет:

1- войдите в FB через браузер
2- примите разрешения приложения (offline_access*, publish_stream и т. д.)

Затем мы создадим штрих-код/карту RFID, где основным кодом будет его/ее имя пользователя/идентификатор. Когда пользователь кладет свою карту под ридер, "система" должна что-то запускать и публиковать что-то на его стене/ленте

Итак:

Думаю, мне придется разработать отдельное настольное приложение, которое получает код от читателя, а затем запускать браузер с URL-адресом моего приложения и некоторыми данными app_data?

Есть ли способ, которым я мог бы автоматически «входить» пользователя в мое приложение FB после того, как карта прошла через считыватель, используя какой-либо токен или аналогичный (зная ранее принятые пользователем разрешения)?

Я подбрасываю идеи, надеюсь, кто-то может поделиться другими, чтобы я мог прояснить это.

Спасибо


person Enrique    schedule 28.09.2012    source источник
comment
После того, как параметр миграции был включен, настольные приложения будут автоматически возвращать пользовательские access_tokens с более длительным сроком действия. Однако невозможно получить долгоживущий пользовательский access_token без повторного входа пользователя в ваше приложение.   -  person nvcnvn    schedule 04.10.2012
comment
Отметьте это, если хотите узнать больше developers.facebook.com/roadmap/offline-access -удаление   -  person nvcnvn    schedule 04.10.2012
comment
Я предполагаю, что вы уже получили идентификатор пользователя. Если нет, скажите, пожалуйста, я могу помочь и с этим. После получения идентификатора пользователя вы можете опубликовать его от имени пользователя в Facebook, используя API-интерфейс Graph с вашим токеном доступа к приложению. Маркер доступа к приложению отличается от маркера активного доступа пользователя. Пример URL-адреса API графа выглядит следующим образом: graph.facebook.com/YOUR_USER_ID/ . Это может быть отправлено методом HTTP GET. Подробную информацию можно найти на странице developers.facebook.com/docs/reference/api.   -  person bhdrkn    schedule 10.10.2012
comment
@bhdrkn Да, я использовал id. Я получаю это после того, как пользователь одобряет разрешение publish_stream. Итак, вы говорите, что я могу публиковать сообщения на стене пользователя без его регистрации с помощью графического API и токена доступа к приложению? У вас есть пример? Если да, то я бы дал вам +50 повторений.   -  person Enrique    schedule 11.10.2012
comment
@Enriue извините, что ввел вас в заблуждение. Чтобы отправлять сообщения, вы должны сделать запрос с помощью http POST. У меня есть пример, надеюсь, он вам поможет.   -  person bhdrkn    schedule 12.10.2012


Ответы (3)


Используйте токен расширенного доступа (долгоживущий токен доступа)

$facebook = new Facebook(array(
  'appId'  => $fbconfig['appid'],
  'secret' => $fbconfig['secret'],
  'cookie' => true,
));

//Store or update this in your database when user accesses your application
$extended_access_token = $facebook->getExtendedAccessToken();

Токен расширенного доступа действителен в течение 60 дней.

person Zany    schedule 25.11.2012
comment
Привет Зани. Я пробовал этот способ, но не работал (у меня последний SDK и т.д.). Я смог получить токен расширенного доступа только с помощью этого кода: pastebin.com/wNsQFmXf - person Enrique; 27.11.2012
comment
Теперь, с токеном расширенного доступа, можете ли вы выполнить то, что хотите? - person Zany; 28.11.2012
comment
Да! попробовал через 2 дня с внешней страницы с QRCode, и сработало! Теперь главная забота состоит в том, чтобы создать что-то альтернативное на случай, если оно перестанет работать, лол. - person Enrique; 30.11.2012
comment
К сожалению, использование маркера расширенного доступа — единственный известный способ автономного доступа. Если он перестает работать, это означает, что ваше приложение будет заблокировано из-за политики Facebook, это риск, который вы должны принять, альтернативы нет. Если мой ответ полезен, помогите принять его. Спасибо ;) - person Zany; 30.11.2012

Вам необходимо приобрести и сохранить токен доступа на шаге 1. С помощью этого токена вы можете публиковать сообщения от имени пользователя. Как получить токен хорошо описано на странице помощи facebook. Судя по всему нет offline_access. Вам нужен токен с длительным сроком действия https://developers.facebook.com/roadmap/offline-access-removal/.

Наконец, самое худшее. Вы хотите разместить сообщение от имени пользователя. Если вы планируете публиковать FIX-контент, я должен вас предупредить — facebook забанит вас. Они не позволяют создавать контент для пользователя. Это считается спамом. Что вы можете сделать, так это опубликовать действие с открытым графиком.

person Lukasz Kujawa    schedule 04.10.2012
comment
Я знаю. Что бы я ни публиковал, я сначала спрошу разрешения у пользователя. Я уже делал это с помощью publish_stream, но теперь моя главная забота — как публиковать сообщения на стене пользователя без входа в FB. Идея состоит в том, чтобы запросить разрешение, а затем создать карту RFID/qrcode/штрих-кода с идентификатором пользователя. Когда он проходит над читателем -на другом компьютере-, в его стене делается запись на стене. Надеюсь, вы поняли мой английский. Спасибо - person Enrique; 04.10.2012
comment
Вы должны принять его точку зрения на публикацию фиксированного контента. Если это станет масштабным, Facebook немедленно УДАЛИТ ваше приложение. Вам повезет, если у вас даже есть ограничения. - person Kishor; 08.11.2012

Мои навыки Php не очень хорошо. Но он думает, что вы можете публиковать сообщения с помощью этого скрипта, используя HTTP-сообщение.

$url = 'https://graph.facebook.com/USER_ID/feed?access_token=APP_ACCESS_TOKEN&message=YOUR_MESSAGE';
$ch = curl_init($url);

$response = curl_exec($ch);
curl_close($ch);

Этот ответ содержит объект JSON, который содержит post_id.

person bhdrkn    schedule 12.10.2012