2012-06-18 2 views
7

이것은 아마도 매우 바보 같은 질문 일 수 있습니다. 그러나 몇 시간 동안이 문제를 꼼짝 않고 바라보고 있었고 잘못하고있는 것을 찾을 수 없었습니다.Python/Django가 포함 된 Facebook의 "redirect_uri parameter missing"응답

Facebook API로 인증하기 위해 Python을 사용하려고하지만 사용자 액세스 토큰을 요청하는 데 문제가 있습니다. 코드를받은 후, 난과 같이 https://graph.facebook.com/oauth/access_token에 요청을 만들 : { "메시지":

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

응답에서, 나는

{ "오류"가 나타납니다. "누락 redirect_uri로 매개 변수를", " 유형 ":"OAuthException ","code ": 191}}

어떤 아이디어가 잘못 될 수 있습니까? 전달되는 redirect_uri가 앱 도메인에 있다는 것을 이미 확인했지만이 호스트가 로컬로 호스팅되고 해당 호스트가 내 호스트 파일에 의해 localhost로 리디렉션되는 문제 일 수 있습니까?

도움 주셔서 감사합니다.

편집 :

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) 

그러나, 나는 아직이 너무 많은 어려움없이 기본적으로 지원해야 할 때 라이브러리에 의존하는 것을 선호 :

내가 요청 라이브러리를 사용하여이 작업을 얻었다. 어쩌면이 첫 번째 예에서

+0

작동한다 : 는 대신, 매개 변수는 URL의 쿼리 문자열 일부로 전달되어야한다. 리디렉션이 작동하는지 Facebook에서 확인합니다. –

+0

그것이 내가 생각한 것입니다. 어떤 아이디어가 잘못 될 수 있습니까? – user1462558

+0

mmmm, 페이스 북 개발자가 응용 프로그램으로 이동합니다. 리디렉션 uri는 애플리케이션 uri와 일치해야합니다. –

답변

1

... 너무 많은 당신이 요청의 본문에 params을 전달하는 (HTTPSConnection를 사용하여 하나)를 요구하고있다 것은 :

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

이 올바르지 않습니다 (요청해야 GET 몸이 없다). 로컬 호스트가 올바르게 설정되어있는 경우

conn.request("GET", "/oauth/access_token?" + params) 
관련 문제