2011-07-09 3 views
2

Je suis les instructions qui se trouvent ici:Facebook Questions OAuth

http://developers.facebook.com/docs/authentication/

tente de se connecter à l'API graphique facebook côté serveur. J'utilise Django et copier essentiellement le même code trouvé ici:

https://github.com/facebook/python-sdk/blob/master/examples/oauth/facebookoauth.py

Voici mon code

def get_code(request): 
    c = RequestContext(request) 
    verification_code = request.GET.get('code',None) 
    args = dict(client_id=FACEBOOK_APP_ID, redirect_uri=REDIRECT) 
    if verification_code: 
     args["client_secret"] = FACEBOOK_SECRET_KEY 
     args["code"] = verification_code 
     response = cgi.parse_qs(urllib.urlopen(
         "https://graph.facebook.com/oauth/access_token?" + 
         urllib.urlencode(args)).read()) 
     print "------------------------" 
     print response 
     #access_token = response["access_token"][-1] 
     #print access_token 
     print "------------------------" 
    else: 
     http.HttpResponseRedirect("https://graph.facebook.com/oauth/authorize?" + urllib.urlencode(args)) 

Quoi qu'il en soit, je suis en mesure d'obtenir avec succès le code d'autorisation, mais lorsque je tente de l'utiliser pour obtenir mon access_token, je vois la réponse suivante:

{ 
    "error": { 
     "type": "OAuthException", 
     "message": "Error validating verification code." 
    } 
} 

Je n'ai aucune idée ce qui se passe, mais je suis les directions suivantes sur les deux t Le site facebook et le code qu'ils fournissent ne fonctionnent pas en Python ni depuis un navigateur. Chose intéressante, si j'utilise le flux côté client avec les mêmes informations d'identification, je peux obtenir access_token via un hash-tag, mais cela ne me sert à rien.

En outre, je suis en train de tester localement @http://127.0.0.1:8000 et ont configuré correctement via mes paramètres d'application facebook.

Merci

MISE À JOUR:

Je l'ai fixé, il se trouve les deux redirect_urs doivent être identiques j'utilisais

^/facebook/auth/

et

^facebook/auth/token/

dès que j'utilisé à la fois

facebook/auth/+ facebook/auth/

il a travaillé

+0

Découpez définitivement votre réparation dans une réponse et marquez-la comme acceptée. Le problème que vous avez rencontré a mordu les autres, je le garantis. – tephyr

Répondre

0

Je vois que vous trouvé une solution à votre problème. Je voulais aussi mentionner une bibliothèque que je maintiens qui pourrait vous faciliter la vie lorsque vous utilisez des fournisseurs OAuth avec Python, elle s'appelle rauth. En particulier, il est an example se connecter à l'API graphique de Facebook en utilisant Flask qui pourrait être utile.

Ceci peut ne plus vous être utile maintenant que vous l'avez déjà fait fonctionner, mais peut-être que vous devrez prendre en compte la prochaine fois que vous aurez besoin de consommer un fournisseur OAuth en Python?