def post(self): flash_messages = [] username = self.request.POST.get("username") password = self.request.POST.get("password") if username and password: params = { "x_auth_mode": "client_auth", "x_auth_username": username, "x_auth_password": password, } api = weibo.API(self.app.config["CONSUMER_KEY"], self.app.config["CONSUMER_SECRET"]) api.bind_auth() try: access_token = api.get_authorized_tokens(**params) except weibo.Error as e: flash_messages.append(u"XAuth错误:%s" % str(e)) else: sid = crypto.encrypt("%s:%s" % (access_token["oauth_token"], access_token["oauth_token_secret"]), self.app.config["SECRET_KEY"]) rss_url = urlparse.urljoin("http://" + self.request.host, self.uri_for("rss", sid=sid)) self.render_response("rss.html", rss_url=rss_url) return else: flash_messages.append(u"缺少邮箱或密码!") self.render_response("login.html", flash_messages=flash_messages)
def get(self): flash_messages = [] code = self.request.GET.get("code") if code is not None: r = urlfetch.fetch( "https://api.weibo.com/oauth2/access_token?" + urllib.urlencode( { "client_id": self.app.config["CONSUMER_KEY"], "client_secret": self.app.config["CONSUMER_SECRET"], "grant_type": "authorization_code", "redirect_uri": self.app.config["CONSUMER_DOMAIN"], "code": code, }), method=urlfetch.POST) resp = json.loads(r.content) if "error" in resp: flash_messages.append(u"错误:%s" % resp["error"]) else: logging.debug("access_token: %s" % resp) sid = crypto.encrypt(resp["access_token"], self.app.config["SECRET_KEY"]) rss_url = urlparse.urljoin("https://" + self.request.host, self.uri_for("rss", sid=sid)) self.render_response("rss.html", rss_url=rss_url) return self.render_response("login.html", flash_messages=flash_messages)
def get(self): flash_messages = [] code = self.request.GET.get("code") if code is not None: r = urlfetch.fetch("https://api.weibo.com/oauth2/access_token?" + urllib.urlencode({ "client_id": self.app.config["CONSUMER_KEY"], "client_secret": self.app.config["CONSUMER_SECRET"], "grant_type": "authorization_code", "redirect_uri": self.app.config["CONSUMER_DOMAIN"], "code": code, }), method=urlfetch.POST) resp = json.loads(r.content) if "error" in resp: flash_messages.append(u"错误:%s" % resp["error"]) else: logging.debug("access_token: %s" % resp) sid = crypto.encrypt(resp["access_token"], self.app.config["SECRET_KEY"]) rss_url = urlparse.urljoin("https://" + self.request.host, self.uri_for("rss", sid=sid)) self.render_response("rss.html", rss_url=rss_url) return self.render_response("login.html", flash_messages=flash_messages)
def md5hash(url): m = hashlib.md5() m.update(crypto.encrypt(url, webapp2.get_app().config["SECRET_KEY"])) return m.hexdigest()