2015-04-13 3 views
0

Я использую python tornado 4.1. Я пытаюсь войти в facebook из своих демо, но это вызывает ошибку. Я сделал скриншот для ошибки.Python Tornado Facebook Auth Ошибка

Ошибка:

AuthError: Facebook auth error: HTTPResponse(_body=None,buffer=<_io.BytesIO object at 0x29f0290>,code=400,effective_url='https://graph.facebook.com/oauth/access_token?client_secret=&code=&client_id=&redirect_uri=http%3A%2F%2Fsoctag.com%2F%2Fauth%2Ffacebooklogin',error=HTTPError('HTTP 400: Bad Request',),headers={'Content-Length': '190', 'Facebook-Api-Version': 'v1.0', 'Expires': 'Sat, 01 Jan 2000 00:00:00 GMT', 'X-Fb-Debug': 'fKw1RAojsZPT2jl7ErDX4S6c2ROg8TgV1KqFn3Yexc9jgJetmP4K0nFZTrATG7cH5ESLJZ51HyACUJQszv5Fmw==', 'X-Fb-Rev': '1685640', 'Connection': 'close', 'Pragma': 'no-cache', 'Cache-Control': 'no-store', 'Date': 'Mon, 13 Apr 2015 11:18:34 GMT', 'Access-Control-Allow-Origin': '*', 'Content-Type': 'text/javascript; charset=UTF-8', 'Www-Authenticate': 'OAuth "Facebook Platform" "invalid_code" "Error validating verification code. Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request"'},reason='Bad Request',request=<tornado.httpclient.HTTPRequest object at 0x2a2edd0>,request_time=0.5871150493621826,time_info={}) 

Scrrenshoot enter image description here

Код:

class AuthFacebookLoginHandler(tornado.web.RequestHandler, tornado.auth.FacebookGraphMixin): 

    @tornado.gen.coroutine 
    def get(self): 
     if self.get_argument("code", False): 
      user = yield self.get_authenticated_user(
       redirect_uri=Helper.url('/auth/facebooklogin'), 
       client_id=self.settings["facebook_api_key"], 
       client_secret=self.settings["facebook_secret"], 
       code=self.get_argument("code")) 

      self.redirect("/auth/facebookmain") 
     else: 
      yield self.authorize_redirect(
       redirect_uri=Helper.url('/auth/facebooklogin'), 
       client_id=self.settings["facebook_api_key"], 
       extra_params={"scope": "read_stream"}) 


class AuthFacebookMainHandler(tornado.web.RequestHandler, tornado.auth.FacebookGraphMixin): 

    @tornado.gen.coroutine 
    def get(self): 
     new_entry = yield self.facebook_request(
      "/me/feed", 
      post_args={"message": "I am posting from my Tornado application!"}, 
      access_token=self.current_user["access_token"]) 

     if not new_entry: 
      # Call failed; perhaps missing permission? 
      yield self.authorize_redirect() 
      return 
     self.finish("Posted a message!") 
+0

Можете ли вы сделать эту ошибку немного больше или на самом деле поставить текст в свой вопрос или что-то еще. – miradulo

+0

@DonkeyKong Я также поместил ошибку как текст – Alexander

ответ

1

Ваше сообщение об ошибке имеет ключ:

Пожалуйста, убедитесь, Ваш redirect_uri идентичен тому, который используется в диалоге запроса OAuth

Проверьте, чтобы убедиться, что ваш URL таким же, как сконфигурирован в Facebook. URL-адрес вашего сайта на странице конфигурации Facebook в базовых настройках должен совпадать с URL-адресом вашей страницы.

Если вы тестируете локальный хост, вы можете изменить свой/etc/hosts для сопоставления своего тестового домена с 127.0.0.1.

Не забывайте, что внутри Facebook вы можете создавать тестовые версии вашего приложения, которые имеют разные конфигурации.

У меня типично, по крайней мере, версия для производства, тестирования и разработки.