0

このチュートリアルを使用して、python、djangoでfb apiのアクセストークンを長期間取得しようとしています: http://developers.facebook.com/docs/howtos/login/server-side-login/

これは、開発サーバーでローカルに機能していますが、本番環境では機能していません!

最初のステップでコードを取得しましたが、次のステップで問題があります:ステップ 6. コードをアクセス トークンに交換する

アクセストークンを取得するための私のコードは次のとおりです。

    params = {
              'client_id': app_id,
              'client_secret': app_secret,                  
              'code': code,
              'redirect_uri': "http://" + Site.objects.get_current().domain + reverse("login_fb")
    }        
    url = "https://graph.facebook.com/oauth/access_token?" + urllib.urlencode(params)  
    headers = {'User-Agent': 'Mozilla/5.0'}
    request = urllib2.Request(url, headers=headers, data=urllib.urlencode(params))        
    response = urllib2.urlopen(request)

リクエストを呼び出すと、エラーが発生しました: HTTP エラー 400: 悪いリクエスト 開発サーバーで動作していました。return redirect(url)代わりに使用するurllib2.urlopen(url)と、有効なアクセス トークンにリダイレクトされます。urlopenで機能しないのはなぜですか?

更新 これは fb api の応答です。

Invalid redirect_uri: The specified URL is not allowed by the configuration of the application
4

1 に答える 1

0

おそらく、Facebook Apps パネルの「App Domains」の 1 つとして「localhost」を追加する必要があります。

  1. https://developers.facebook.com/apps
  2. デバッグしようとしているアプリを「編集」します
  3. 「App Domains」行に入力しlocalhost ます(「ドメインとサブドメインで認証を有効にする」というヘルプテキストにも注意してください)。
于 2013-01-25T03:53:34.507 に答える