使用pyfacebook更新Facebook页面状态
我正在尝试给我的Django应用添加一些功能:当一个新帖子被批准时,我想自动更新对应的Facebook页面状态,发布一条消息和一个链接到这个帖子。这是一个基本的状态更新。
我已经下载并安装了pyfacebook,并且阅读了Facebook的教程。我还在这里的StackOverflow上看到了一些建议:
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 个回答
0
如果你想登录你的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
2
在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页面User:PyFacebook_Tutorial,里面的login
示例是针对“桌面应用程序”的。你应该关注“网页应用程序”那一部分。我建议你直接按照那里的教程继续学习。