使用Tornado和Angular2进行Facebook身份验证

时间:2016-05-20 22:16:46

标签: python facebook authentication angular tornado

因此,我正在尝试使用自己的应用程序,并尝试通过Facebook进行身份验证。我不想在UI端拥有凭据,因此希望将所有身份验证逻辑放在服务器端。

基本上我在龙卷风中的身份验证看起来像:

class AuthLoginHandler(BaseHandler, tornado.auth.FacebookGraphMixin):
    @tornado.web.asynchronous
    @gen.engine
    def get(self):
        my_url = (self.request.protocol + "://" + self.request.host +
                  "/auth/facebook?next=" +
                  tornado.escape.url_escape(self.get_argument("next", "/")))
        if self.get_argument("code", False):
            self.get_authenticated_user(
                redirect_uri=my_url,
                client_id="id",
                client_secret="secret",
                code=self.get_argument("code"),
                callback=self._on_auth)
            return
        self.authorize_redirect(redirect_uri=my_url,
                                client_id="id",
                                extra_params={"scope": "public_profile,user_friends,email"})

我写了一个angular2服务,在龙卷风中调用这个api来进行身份验证。

  signMeIn(){
this.http.get('/auth/facebook')
.map(res => res.text())
.subscribe(
  data => this.user = data
  console.log("success")
  ,
  err => console.log("Error Authenticating User"),
  () => console.log('Random Quote Complete')
);

}

但是我收到了这个错误:

XMLHttpRequest无法加载https://www.facebook.com/dialog/oauth?...response_type=code&client_id=id。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://localhost:3000'因此不允许访问。

我的基础处理程序中也有这个。

class BaseHandler(tornado.web.RequestHandler):
def get_current_user(self):
    return self.get_secure_cookie("user")
def set_default_headers(self):
    print "setting headers!!!"
    self.set_header("Access-Control-Allow-Origin", "*")
    self.set_header("Access-Control-Allow-Headers", "x-requested-with")
    self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')

请咨询

0 个答案:

没有答案