Как обновить статус FB с помощью Python & GraphAPI?

Ранее этот вопрос задавали, но многие из решений были устаревшими, и требование GraphAPI, по-видимому, сделало многие решения несущественными. Я поиграл с файлами fbpy, facebook, oauth, oauth2 и просмотрел их примеры, но до сих пор не могу понять, как заставить его работать. Я не доверяю ни коду, ни пакетам, которые я использовал, и задаюсь вопросом, будут ли у кого-нибудь какие-то окончательные решения, которые, как они знают, будут работать. Благодарю.

4 Solutions collect form web for “Как обновить статус FB с помощью Python & GraphAPI?”

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

Следующее, что есть различные способы реализации обработки OAuth и различные способы отображения и запуска вашего веб-приложения в Python. Невозможно разрешить авторизацию без попадания в браузер. В противном случае вам нужно будет сохранить копию кода access_token в коде.

Предположим, вы выбрали web.py для обработки презентации веб-приложения и web.py для обработки HTTP-вызовов Graph API.

 import web, requests 

Затем настройте URL-адрес, по которому мы хотим, чтобы все запросы проходили

 url = ( '/', 'index' ) 

Теперь получите идентификатор вашего приложения, секретный URL и URL-адрес после входа, который вы хотите использовать.

 app_id = "YOUR_APP_ID" app_secret = "APP_SECRET" post_login_url = "http://0.0.0.0:8080/" 

Этот код будет иметь один index класса для обработки логики. В этом классе мы хотим иметь дело с code авторизации, который Facebook вернется после входа в систему

Входной поток

 user_data = web.input(code=None) code = user_data.code 

Отсюда установите условие для проверки code

 if not code: # we are not authorized # send to oauth dialog else: # authorized, get access_token 

В пределах «неавторизованного» филиала отправьте пользователя в диалоговое окно

 dialog_url = ( "http://www.facebook.com/dialog/oauth?" + "client_id=" + app_id + "&redirect_uri=" + post_login_url + "&scope=publish_stream" ) return "<script>top.location.href='" + dialog_url + "'</script>" 

Кроме того, мы можем извлечь access_token используя полученный code

 token_url = ( "https://graph.facebook.com/oauth/access_token?" + "client_id=" + app_id + "&redirect_uri=" + post_login_url + "&client_secret=" + app_secret + "&code=" + code ) response = requests.get(token_url).content params = {} result = response.split("&", 1) for p in result: (k,v) = p.split("=") params[k] = v access_token = params['access_token'] 

Отсюда вы можете выбрать, как вы хотите иметь дело с вызовом, чтобы обновить статус, например, форму,

 graph_url = ( "https://graph.facebook.com/me/feed?" + "access_token=" + access_token ) return ( '<html><body>' + '\n' + '<form enctype="multipart/form-data" action="' + graph_url + ' "method="POST">' + '\n' + 'Say something: ' + '\n' + '<input name="message" type="text" value=""><br/><br/>' + '\n' + '<input type="submit" value="Send"/><br/>' + '\n' + '</form>' + '\n' + '</body></html>' ) 

Или используя face.py

 from facepy import GraphAPI graph = GraphAPI(access_token) try: graph.post( path = 'me/feed', message = 'Your message here' ) except GraphAPI.OAuthError, e: print e.message 

Таким образом, в конце вы можете получить уменьшенную версию, например

 import web from facepy import GraphAPI from urlparse import parse_qs url = ('/', 'index') app_id = "YOUR_APP_ID" app_secret = "APP_SECRET" post_login_url = "http://0.0.0.0:8080/" user_data = web.input(code=None) if not user_data.code: dialog_url = ( "http://www.facebook.com/dialog/oauth?" + "client_id=" + app_id + "&redirect_uri=" + post_login_url + "&scope=publish_stream" ) return "<script>top.location.href='" + dialog_url + "'</script>" else: graph = GraphAPI() response = graph.get( path='oauth/access_token', client_id=app_id, client_secret=app_secret, redirect_uri=post_login_url, code=code ) data = parse_qs(response) graph = GraphAPI(data['access_token'][0]) graph.post(path = 'me/feed', message = 'Your message here') 

Для получения дополнительной информации см.

* Facebook API – фид пользователя: http://developers.facebook.com/docs/reference/api/user/#feed
* Публикуйте фотографию в Facebook на Python – Основной соус: http://philippeharewood.com/facebook/publish-a-facebook-photo-in-python-the-basic-sauce/
* Facebook и Python – Основной соус: http://philippeharewood.com/facebook/facebook-and-python-the-basic-sauce/

Одно из возможных (проверенных!) Решений с использованием facepy :

  1. Создайте новое приложение или используйте уже созданную ранее.
  2. Создайте токен доступа пользователя с помощью проводника Graph API с расширенным разрешением status_update для приложения.
  3. Используйте токен доступа пользователя, созданный на предыдущем шаге, с помощью facepy :

     from facepy import GraphAPI ACCESS_TOKEN = 'access-token-copied-from-graph-api-explorer-on-web-browser' graph = GraphAPI(ACCESS_TOKEN) graph.post('me/feed', message='Hello World!') 

Вы также можете попробовать этот блог. Он использует приложение fbconsole .

Код из блога:

 from urllib import urlretrieve import imp urlretrieve('https://raw.github.com/gist/1194123/fbconsole.py', '.fbconsole.py') fb = imp.load_source('fb', '.fbconsole.py') fb.AUTH_SCOPE = ['publish_stream'] fb.authenticate() status = fb.graph_post("/me/feed", {"message":"Your message here"}) 

Вот как я заработал. Вам абсолютно не нужно создавать приложения для этого. Я опишу, как публиковать обновления статуса в вашем профиле и на вашей странице в facebook.

Во-первых, чтобы опубликовать обновление статуса в вашем профиле:

Перейдите на страницу https://developers.facebook.com/tools/explorer .
Перед этим вы увидите текстовое поле с токеном доступа. Нажмите на кнопку «Получить токен доступа» рядом с этим текстовым полем. Он откроет всплывающее окно с просьбой предоставить вам различные разрешения для токена доступа. В основном эти разрешения определяют, что все, что вы можете сделать через Graph API, используя этот токен. Установите флажки рядом со всеми необходимыми разрешениями, которые будут обновлять ваш статус.
Теперь идите и установите личный модуль. Лучшим способом было бы использовать pip install.
После этого pase следующий фрагмент кода в любом файле .py:

 from facepy import GraphAPI access_token = 'YOUR_GENERATED_ACCESS_TOKEN' apiConnection = GraphAPI(access_token) apiConnection.post(path='me/feed', message='YOUR_DESIRED_STATUS_UPDATE_HERE') 

Теперь запустите этот .py-файл стандартным способом python и проверьте свою facebook. Вы должны увидеть, что YOUR_DESIRED_STATUS_UPDATE_HERE отправлен в ваш профиль facebook.

Затем, чтобы сделать то же самое с вашей страницей facebook:

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

Перейдите на ту же страницу developers.facebook.com/tools/explorer.

Найдите раскрывающийся список, показывающий «API-интерфейс графического интерфейса» и нажмите на него. В раскрывающемся списке выберите свою страницу, на которой вы хотите публиковать обновления. Создайте новый токен доступа для этой страницы. Процесс описан здесь :. Не забудьте проверить разрешение manage_pages на вкладке расширенных разрешений.

Теперь используйте этот токен в том же коде, который использовался ранее, и запустите его.

Перейдите на свою страницу в facebook. Вы должны YOUR_DESIRED_STATUS_UPDATE на свою страницу.

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

  • Facebook Python SDK
  • Как получить все комментарии / комментарии по Facebook OpenGraph
  • Получить сообщение на странице Facebook с помощью API Facebook (python)
  • Библиотеки Python для интеграции Django с Facebook
  • Как использовать API-интерфейс Python Facebook Graph
  • tag facebook friends python sdk GraphApi в put_photo
  • API Facebook и Python
  • Как получить токен доступа Facebook, используя библиотеку Python?
  • нужно перечислить всех друзей с помощью facebook.py
  • Изучение python и потоков. Я думаю, что мой код работает бесконечно. Помогите мне найти ошибки?
  • Как использовать urllib2.urlopen для запроса POST без аргумента данных
  • Python - лучший язык программирования в мире.