2009-12-15 7 views
2

J'essaie d'ajouter des fonctionnalités à mon application Django: lorsqu'un nouveau message est approuvé, je veux mettre à jour le statut de la page Facebook correspondante avec un message et un lien vers le message automatiquement. Mise à jour de base du statut. J'ai téléchargé et installé pyfacebook - et j'ai lu le tutorial de Facebook. Je l'ai aussi vu cette suggestion here on SO:Mettre à jour l'état de Facebook Page en utilisant pyfacebook

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') 

Quand je reçois à cependant appel, login() pyfacebook tente d'ouvrir le lynx je peux le login à Facebook « via le web » - ce qui est, évidemment, ne va pas travailler pour moi parce que le système est censé être automatisé ... J'ai regardé, mais je ne peux pas trouver comment je peux garder tout cela fonctionnant avec le script et ne pas avoir à se connecter via un navigateur Web.

Des idées?

Répondre

2

Dans la définition de login, en particulier dans la docstring, il semble que le comportement prévu est d'ouvrir un navigateur afin de vous connecter de cette façon.

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)) 

regardant la page facebook User:PyFacebook_Tutorial que vous LIÉ, il ressemble à l'exemple avec login est un exemple « Applications de bureau ». Vous voulez suivre la section "Applications Web". Je vous encourage à simplement aller de l'avant avec le tutoriel là-bas.

+0

Il y a une explication plus bas à: http://wiki.developers.facebook.com/index.php/User:PyFacebook_Tutorial#Adding_content_to_a_profile_page_without_user_interaction.2Flogin ... Cependant, une note indique que la méthode est actuellement 'overkill' ... espérait que quelqu'un avait l'expérience à partager qui pourrait aider ... sinon, va essayer cette route. – thornomad

+0

Le commentaire est que le "tour de clé de session infinie" est exagéré. Je serais toujours enclin à suivre le tutoriel d'abord, juste pour le faire fonctionner. Vous pouvez suivre les conseils sur les clés de session après avoir pris connaissance de l'API. –

+1

Je n'ai pas encore réussi à poster, mais c'était utile: http://www.emcro.com/blog/2009/01/facebook-infinite-session-keys-no-more/ – thornomad

0

Si vous voulez vous connecter à votre page profil facebook J'ai réussi à le faire avec ce script:

Enregistrez ce fichier sous fb_login.py et dans le même dossier, créez un fichier fb_test.html

Je me suis connecté avec succès, comme vous pouvez le constater en consultant le fichier fb_test.html ou en cherchant votre nom dans le texte brut.

Est-ce que quelqu'un sait comment se connecter avec les informations d'identification de Authedication simples et non avec SECRET ET clé API que vous devez faire une demande?

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 
Questions connexes