2012-06-18 13 views
7

これはおそらく非常に疑問な質問ですが、私はこれを何時間も見つめていて、間違っていることを見つけることはできません。Python/DjangoのFacebookからの "missing redirect_uri parameter"レスポンス

私はFacebook APIで認証するためにPythonを使用しようとしていますが、ユーザーアクセストークンを要求している問題があります。コードを受信した後、私は等https://graph.facebook.com/oauth/access_tokenに要求する:{ "メッセージ": "欠落REDIRECT_URIパラメータ"、」応答し

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

を、Iは{ "エラー"

を受け取りますタイプ: "" OAuthException "、" code ":191}}

何が問題になる可能性がありますか?私はすでに渡されているredirect_uriがappドメイン上にあることを確認しましたが、これはローカルでホストされているという問題かもしれませんし、そのドメインは私のhostsファイルによって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) 

しかし、私はまだ、これはあまりにも多くの困難を伴わずにネイティブにサポートされなければならないとき、ライブラリに依存することを好むだろう。 GETリクエスト(

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

これは間違っていなければならない:多分これはあまりにも多くの...あなたの最初の例(HTTPSConnectionを使用して1)で

+0

ローカルホストが正しく設定されている場合はそれが動作するはずです。 Facebookは、リダイレクトが動作するかどうかを確認します –

+0

これは私が考えたものです。どんなことが間違っているのでしょうか? – user1462558

+0

mmm、Facebookの開発者はアプリケーションにアクセスします。リダイレクトuriはアプリケーションuriと一致する必要があります –

答えて

1

は、 あなたがリクエストのボディにparamsを渡している求めています体がない)。 URLの代わりに、パラメータは、クエリ文字列 として渡されるべき部分:

conn.request("GET", "/oauth/access_token?" + params) 
関連する問題