2009-12-15 63 views
2

我正在嘗試向我的Django應用程序添加功能:當新帖子被批准時,我想用消息和鏈接自動更新相應Facebook頁面的狀態。基本狀態更新。使用pyfacebook更新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試圖打開山貓這樣我就可以「通過網絡」登錄Facebook的 - 這是很明顯,不會爲我工作,因爲該系統應該是自動化的... 我一直在尋找,但無法找到我如何保持這一切與腳本工作,而不必通過Web瀏覽器登錄。

任何想法?

回答

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的例子是「桌面應用程序」的例子。您想要遵循「Web應用程序」部分。我鼓勵你簡單地按下教程。

+0

有一個進一步的解釋下來:http://wiki.developers.facebook.com/index.php/User:PyFacebook_Tutorial#Adding_content_to_a_profile_page_without_user_interaction.2Flogin ......然而,通知上說,該方法是目前'過度殺傷'......希望有人分享經驗可能會有所幫助......否則,會嘗試這種方式。 – thornomad 2009-12-15 15:02:02

+0

評論是「無限會話關鍵技巧」是矯枉過正。我仍然傾向於先遵循教程,只是爲了使其工作。在獲得API的感覺後,您可以按照會話密鑰建議進行操作。 – 2009-12-15 15:13:23

+1

還沒有設置發佈,但這是有幫助的:http://www.emcro.com/blog/2009/01/facebook-infinite-session-keys-no-more/ – thornomad 2009-12-15 15:43:32

0

如果你想登錄到你的Facebook個人資料頁我設法與這個腳本做到這一點:

保存此文件作爲fb_login.py,並在同一文件夾中創建一個文件fb_test.html

我成功登錄了,您可以通過在瀏覽器中查看fb_test.html或以純文本搜索您的名字來證明。

有誰知道如何使用簡單的自動驗證憑證登錄,而不需要使用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