我正在尝试为我的Django应用添加功能:当一个新帖子被批准时,我想通过一条消息和一条自动链接来更新相应的Facebook页面状态。基本状态更新。
我已经下载并安装了pyfacebook - 我已经阅读了Facebook的tutorial。我也看到了这个建议here on 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了 - 这显然不会对我有用,因为系统是应该是自动化的......
我一直在寻找,但无法找到如何保持这一切与脚本一起工作,而不必通过网络浏览器登录。
有什么想法吗?
答案 0 :(得分:2)
在login
的定义中,特别是在docstring中,似乎预期的行为是打开浏览器以便以这种方式登录。
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
的示例是“桌面应用程序”示例。您想要关注“Web应用程序”部分。我鼓励你简单地按下那里的教程。
答案 1 :(得分:0)
如果您想登录您的Facebook个人资料页面,我已设法使用此脚本执行此操作:
将此文件另存为 fb_login.py ,并在同一文件夹中创建文件 fb_test.html
我已成功登录,因为您可以在浏览器中查看fb_test.html或在纯文本中搜索您的姓名。
有没有人知道如何使用简单的Authedication凭据登录,而不是使用SECRET和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