def connect_callback(provider): code = request.args.get("code") d = config.APIKEY_DICT.get(provider) login_service = None if provider == config.OPENID_DOUBAN: openid_type = config.OPENID_TYPE_DICT[config.OPENID_DOUBAN] login_service = DoubanLogin(d["key"], d["secret"], d["redirect_uri"]) elif provider == config.OPENID_SINA: openid_type = config.OPENID_TYPE_DICT[config.OPENID_SINA] login_service = SinaLogin(d["key"], d["secret"], d["redirect_uri"]) else: ## 处理以oauth1的方式授权的 if provider == config.OPENID_QQ: user = _qqweibo_callback(request) elif provider == config.OPENID_TWITTER: user = _twitter_callback(request) if user: _add_sync_task_and_push_queue(provider, user) return redirect(url_for("index")) else: return "connect to %s fail" % provider try: token_dict = login_service.get_access_token(code) except OAuthLoginError, e: abort(401, e.msg)
def get(self, url, extra_dict=None): uri = urlparse.urljoin(self.api_host, url) if extra_dict is None: extra_dict = {} extra_dict["alt"] = "json" if extra_dict: qs = urllib.urlencode(extra_dict) if "?" in uri: uri = "%s&%s" % (uri, qs) else: uri = "%s?%s" % (uri, qs) headers = {"Authorization": "Bearer %s" % self.access_token} log.info('getting %s...' % uri) resp, content = httplib2_request(uri, "GET", headers=headers) if resp.status == 200: return content else: #TODO: 在这里如果access_token过期了需要refresh log.warn("get %s fail, status code=%s, msg=%s. go to refresh token" \ % (uri, resp.status, content)) d = config.APIKEY_DICT.get(config.OPENID_DOUBAN) login_service = DoubanLogin(d['key'], d['secret'], d['redirect_uri']) try: login_service.update_tokens(self.refresh_token) except OAuthLoginError, e: log.warn("refresh token fail: %s" % e)
def connect_callback(provider): code = request.args.get("code") d = config.APIKEY_DICT.get(provider) login_service = None user = None if provider in [config.OPENID_DOUBAN, config.OPENID_SINA,]: if provider == config.OPENID_DOUBAN: openid_type = config.OPENID_TYPE_DICT[config.OPENID_DOUBAN] login_service = DoubanLogin(d['key'], d['secret'], d['redirect_uri']) elif provider == config.OPENID_SINA: openid_type = config.OPENID_TYPE_DICT[config.OPENID_SINA] login_service = SinaLogin(d['key'], d['secret'], d['redirect_uri']) ## oauth2方式授权处理 try: token_dict = login_service.get_access_token(code) except OAuthLoginError, e: abort(401, e.msg) if not ( token_dict and token_dict.get("access_token") ): abort(401, "no_access_token") try: user_info = login_service.get_user_info( token_dict.get("access_token"), token_dict.get("uid")) except OAuthLoginError, e: abort(401, e.msg)
def connect_callback(provider): code = request.args.get("code") d = config.APIKEY_DICT.get(provider) login_service = None user = None openid_type = config.OPENID_TYPE_DICT.get(provider) if not openid_type: abort(404, "not support such provider") if provider in [ config.OPENID_DOUBAN, config.OPENID_SINA, ]: if provider == config.OPENID_DOUBAN: login_service = DoubanLogin(d['key'], d['secret'], d['redirect_uri']) elif provider == config.OPENID_SINA: login_service = SinaLogin(d['key'], d['secret'], d['redirect_uri']) ## oauth2方式授权处理 try: token_dict = login_service.get_access_token(code) except OAuthLoginError, e: abort(401, e.msg) if not (token_dict and token_dict.get("access_token")): abort(401, "no_access_token") try: user_info = login_service.get_user_info( token_dict.get("access_token"), token_dict.get("uid")) except OAuthLoginError, e: abort(401, e.msg)
def connect(provider): d = config.APIKEY_DICT.get(provider) login_service = None if provider == config.OPENID_DOUBAN: login_service = DoubanLogin(d['key'], d['secret'], d['redirect_uri']) elif provider == config.OPENID_SINA: login_service = SinaLogin(d['key'], d['secret'], d['redirect_uri']) elif provider == config.OPENID_TWITTER: login_service = TwitterOAuthLogin(d['key'], d['secret'], d['redirect_uri']) try: login_uri = login_service.get_login_uri() except OAuthLoginError, e: return "auth error:%s" % e
def connect(provider): #return "thepast.me 正在升级硬件,暂时不提供登录、注册功能,请谅解,有问题请邮件到 [email protected]" d = config.APIKEY_DICT.get(provider) login_service = None if provider == config.OPENID_DOUBAN: login_service = DoubanLogin(d['key'], d['secret'], d['redirect_uri']) elif provider == config.OPENID_SINA: login_service = SinaLogin(d['key'], d['secret'], d['redirect_uri']) elif provider == config.OPENID_QQ: login_service = QQOAuth1Login(d['key'], d['secret'], d['redirect_uri']) elif provider == config.OPENID_TWITTER: login_service = TwitterOAuthLogin(d['key'], d['secret'], d['redirect_uri']) try: login_uri = login_service.get_login_uri() except OAuthLoginError, e: return "auth error:%s" % e
def connect_callback(provider): code = request.args.get("code") d = config.APIKEY_DICT.get(provider) login_service = None if provider == config.OPENID_DOUBAN: openid_type = config.OPENID_TYPE_DICT[config.OPENID_DOUBAN] login_service = DoubanLogin(d['key'], d['secret'], d['redirect_uri']) elif provider == config.OPENID_SINA: openid_type = config.OPENID_TYPE_DICT[config.OPENID_SINA] login_service = SinaLogin(d['key'], d['secret'], d['redirect_uri']) elif provider == config.OPENID_TWITTER: user = _twitter_callback(request) if user: _add_sync_task_and_push_queue(provider, user) return redirect(url_for('index')) else: return "connect fail" try: token_dict = login_service.get_access_token(code) except OAuthLoginError, e: abort(401, e.msg)