Facebook размещение на странице - PullRequest
2 голосов
/ 09 сентября 2011

Я пытаюсь опубликовать на стене страницы в фейсбуке, что я администратор (не профиль), но не повезло Как мне этого добиться? Я застрял в части получения токена доступа к странице.

#!/usr/bin/python
# coding: utf-8

import facebook
import urllib
import urlparse
import subprocess
import warnings

# Hide deprecation warnings. The facebook module isn't that up-to-date (facebook.GraphAPIError).
warnings.filterwarnings('ignore', category=DeprecationWarning)




# Parameters of your app and the id of the profile you want to mess with.
FACEBOOK_APP_ID     = 'XXXXXXXXXXXXXX'
FACEBOOK_APP_SECRET = 'XXXXXXXXXXXXXXXXXXXXX'
FACEBOOK_PROFILE_ID = 'XXXXXXXXXXX'


# Trying to get an access token. Very awkward.
oauth_args = dict(client_id     = FACEBOOK_APP_ID,
                  client_secret = FACEBOOK_APP_SECRET,
                  scope         = 'manage_pages',
                  response_type = 'token'
                  )
oauth_curl_cmd = ['curl',
                  'https://graph.facebook.com/oauth/access_token?' + urllib.urlencode(oauth_args)]
oauth_response = subprocess.Popen(oauth_curl_cmd,
                                  stdout = subprocess.PIPE,
                                  stderr = subprocess.PIPE).communicate()[0]

print urllib.urlencode(oauth_args)

try:
    oauth_access_token = urlparse.parse_qs(str(oauth_response))['access_token'][0]
except KeyError:
    print('Unable to grab an access token!')
    exit()
print oauth_access_token

facebook_graph = facebook.GraphAPI(oauth_access_token)


# Try to post something on the wall.
try:
    fb_response = facebook_graph.put_wall_post('Hello from Python', \
                                               profile_id = FACEBOOK_PROFILE_ID)
    print fb_response
except facebook.GraphAPIError as e:
    print 'Something went wrong:', e.type, e.message

1 Ответ

1 голос
/ 09 сентября 2011

Я бы не советовал делать это через командную строку с curl, так как это менее безопасно и менее надежно.Вы можете сделать все это с модулями urllib2 и json

, чтобы получить токен доступа, на который вы просто хотите позвонить https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&grant_type=client_credentials

, поэтому вы должны сделать:

url='https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&grant_type=client_credentials'
target=urllib2.urlopen(url)
token = target.read()[13:]

РЕДАКТИРОВАТЬ: мой плохой, я забыл, что facebook / oauth дает вам токен доступа в виде простого текста, поэтому вам не нужен модуль json.Я обновил пример, чтобы показать, что вы должны делать.Обратите внимание, что target.read () выдаст вам строку «access_token = ACCESS_TOKEN», а затем вы просто проанализируете ее, чтобы удалить идентификатор.

чтобы узнать, что это за ответ, перейдите по URL-адресу и введите свою информацию, которую вы будете диктовать json с помощью acess_token.

вторая половина этой страницы должна содержать всю необходимую информацию.

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