def get(self,provider): print provider client = None if provider == config.OPENID_DOUBAN: client = Douban() elif provider == config.OPENID_SINA: client = SinaWeibo() if not client: log.warning(u'不合法的路径连接') raise tornado.web.HTTPError(400,u"不支持该第三方账户登录") try: login_uri = client.login() except OAuthError,e: log.warning(e) raise tornado.web.HTTPError(400,u"跳转到第三方失败,请重新尝试一下")
def get(self,provider): code = self.get_argument("code") client = None user = None openid_type = config.OPENID_TYPE_DICT.get(provider) if not openid_type: raise tornado.web.HTTPError(404,"not support such provider") if provider in [config.OPENID_DOUBAN,config.OPENID_SINA,]: if provider == config.OPENID_DOUBAN: client = Douban() elif provider == config.OPENID_SINA: client = SinaWeibo() ## oauth2方式授权处理 try: token_dict = client.get_access_token(code) log.info(token_dict) #print "---token_dict:",token_dict except OAuthError,e: log.warning(e) raise tornado.web.HTTPError(400,u"从第三方获取access_token失败了,请重新尝试一下。") if not (token_dict and token_dict.get("access_token")): raise tornado.web.HTTPError(400,"no_access_token") try: access_token = token_dict.get("access_token","") refresh_token = token_dict.get("refresh_token","") uid = token_dict.get("uid") or token_dict.get("user", {}).get("uid") \ or token_dict.get("user", {}).get("id") client.set_token(access_token, refresh_token) user_info = client.get_user_info(uid) log.info(user_info) log.info(user_info.data) except OAuthError, e: log.warning(e) raise tornado.web.HTTPError(400, e.msg)