2012-06-18 15 views
7

Bu muhtemelen çok aptalca bir sorudur, ancak saatlerce buna bakıyordum ve yanlış yaptığımı bulamıyorum.Python/Django ile Facebook'tan "Eksik redirect_uri parametresi" yanıtı

Facebook API ile kimlik doğrulamak için Python kullanmaya çalışıyorum, ancak kullanıcı erişim belirteci isteğinde sorun yaşıyorum. Bir kodunu aldıktan sonra, ben şöyle https://graph.facebook.com/oauth/access_token istekte bulunur: { "message":

conn = httplib.HTTPSConnection("graph.facebook.com") 
params = urllib.urlencode({'redirect_uri':request.build_absolute_uri(reverse('some_app.views.home')), 
          'client_id':apis.Facebook.app_id, 
          'client_secret':apis.Facebook.app_secret, 
          'code':code}) 
conn.request("GET", "/oauth/access_token", params) 
response = conn.getresponse() 
response_body = response.read() 

yanıt olarak,

{ "hata" alma "Eksik redirect_uri parametresini"," ":" OAuthException "," code ": 191}}

Herhangi bir fikir yanlış giden ne olabilir? Geçirilmekte olan redirect_uri'nin uygulama etki alanında olduğunu doğrulamıştım, ancak bunun yerel olarak barındırılmasının ve bu etki alanının yalnızca hosts'im tarafından localhost'a yönlendirilmesi sorunu olabilir mi?

Yardımlarınız için teşekkürler!

düzenleme:

params = {'redirect_uri':request.build_absolute_uri(reverse('profiles.views.fb_signup')), 
          'client_id':apis.Facebook.app_id, 
          'client_secret':apis.Facebook.app_secret, 
          'code':code} 

r = requests.get("https://graph.facebook.com/oauth/access_token",params=params) 

Ancak, yine de bu çok fazla zorlanmadan yerel olarak desteklenen gerekirken bir kütüphane bağımlı olmayı tercih ediyorum:

Ben istekleri kitaplığı kullanarak bu çalışma var. Belki bu sizin ilk örnekte

+0

çalışması gerekir: Bunun yerine, parametreler URL sorgu dizesini parçası olarak kabul edilmelidir. Facebook yeniden yönlendirme çalışıp çalışmadığını kontrol edecek –

+0

Ben de öyle düşündüm. Başka hangi fikirleri yanlış gidebilir? – user1462558

+0

mmm, facebook geliştiricileri uygulamanıza gidin. Yönlendirme uri uygulama uri ile eşleşir –

cevap

1

... çok fazla istek gövdesinde params geçiyoruz (HTTPSConnection kullanarak bir), soruyor:

conn.request("GET", "/oauth/access_token", params) 

Bu yanlış (istekler gerektiği GET vücudum yok). senin localhost doğru bir şekilde kurulmuş olursa

conn.request("GET", "/oauth/access_token?" + params)