Обновите статус страницы Facebook с помощью pyfacebook - PullRequest
2 голосов
/ 15 декабря 2009

Я пытаюсь добавить функциональность в мое приложение Django: при утверждении нового сообщения я хочу обновить статус соответствующей страницы Facebook с помощью сообщения и ссылки на сообщение автоматически. Базовое обновление статуса.

Я скачал и установил pyfacebook - и я прочитал учебник с Facebook. Я также видел это предложение здесь на SO :

import facebook
fb = facebook.Facebook('YOUR_API_KEY', 'YOUR_SECRET_KEY')
fb.auth.createToken()
fb.login() # THIS IS AS FAR AS I CAN GET
fb.auth.getSession()
fb.set_status('Checking out StackOverFlow.com')

Когда я получаю вызов login(), pyfacebook пытается открыть lynx, чтобы я мог войти в Facebook «через Интернет» - это, очевидно, не будет работать для меня, потому что система должна быть автоматизированным ... Я искал, но не могу узнать, как я могу сохранить все это при работе со сценарием и без необходимости входа через веб-браузер.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 15 декабря 2009

В определении login, особенно в строке документации, создается впечатление, что предполагаемое поведение состоит в том, чтобы открыть браузер, чтобы вы могли войти таким образом.

def login(self, popup=False):
    """Open a web browser telling the user to login to Facebook."""
    import webbrowser
    webbrowser.open(self.get_login_url(popup=popup))

Глядя на страницу в Facebook Пользователь: PyFacebook_Tutorial , который вы связали, похоже, что пример с login является примером "Настольных приложений". Вы хотите следовать разделу «Веб-приложения». Я бы посоветовал вам просто продвигать учебник там.

0 голосов
/ 02 января 2011

Если вы хотите войти на страницу своего профиля в Facebook, мне удалось сделать это с помощью этого скрипта:

Сохраните этот файл как fb_login.py и в той же папке создайте файл fb_test.html

Я успешно вошел в систему, как вы можете убедиться, просмотрев в браузере файл fb_test.html или выполнив поиск по вашему имени в текстовом формате.

Кто-нибудь знает, как войти в систему с простыми учетными данными аутентификации, а не с секретным ключом и ключом API, которые необходимы для создания приложения?

import urllib, urllib2, cookielib

user = 'put_your_mail_here'
passwd = 'put_your_password_here'

file = './fb_test.html'
url_login = "https://login.facebook.com/login.php?"
url_action = "https://login.facebook.com/login.php?login_attempt=1"
url_topic = "http://www.facebook.com/profile.php?id=___put_your_profile_Number_here"
url_index = "https://login.facebook.com/login.php?"

def login(user, password, url_action):
    cj = cookielib.LWPCookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
    urllib2.install_opener(opener)
    opener.addheaders=[('Content-Type','application/x-www-form-urlencoded'),('Connection','keep-alive'),('User-Agent','Mozilla/5.0')]
    params = urllib.urlencode({'action':url_action , 'referer':url_index, 'email':user, 'pass':passwd, 
                                  'loginTrue':"login"})

f = opener.open(url_action, params)
    f.close()
    f = opener.open(url_action, params)
    f.close()
    return opener

def get_source_code( opener, url_x ):
    f = opener.open(url_x)
    data = f.read()
    print type(data)
    f.close()
    return data

def keep_log( data, file ):
    f = open(file, 'w')
    f.write(data)
    f.close()

opener = login(user, passwd, url_action)
src_code = get_source_code(opener, url_topic)
keep_log(src_code, file)
print src_code
...