Oauth2.0 笔记
其中包含新浪微博oauth1.0与oauth2.0的版本。
由于各方面的原因还是推荐使用2.0版本,但是由于新浪单方面不提供refresh_token,所以session有效期只有24小时,这点相当让人讨厌,让我们鄙视下新浪吧。嗯
一些小提示:
2.0版本提供了对图片上传的支持,需要注意的是读取图片的时候记得‘rb’
oauth2.0验证登录的时候必须指定redirect_url,这个url需要在新浪应用设置,然后程序中必须与设置一样。如有需要设置oauth回调时附带一些额外参数,可在authorize_redirect调用时将参数放进state,例子如下:
class WeiboAuthHandler(tornado.web.RequestHandler, WeiboMixin):
@tornado.web.asynchronous
def get(self):
next = self.get_argument("next",None)
state = self.get_argument("state", None)
redirect_uri = self.settings["weibo_redirect_uri"]
if self.get_argument("code", None):
self.get_authenticated_user(
redirect_uri=redirect_uri,
client_id=self.settings["weibo_consumer_key"],
client_secret=self.settings["weibo_consumer_secret"],
code=self.get_argument("code"),
callback=self.async_callback(self._on_auth,state),
)
return
if next:
self.authorize_redirect(redirect_uri=redirect_uri,
client_id=self.settings["weibo_consumer_key"],
client_secret=self.settings["weibo_consumer_secret"],
extra_params={"state":next})#传递next参数
else:
self.authorize_redirect(redirect_uri=redirect_uri,
client_id=self.settings["weibo_consumer_key"],
client_secret=self.settings["weibo_consumer_secret"])
def _on_auth(self, next, user):
if not user:
raise error
#do something
return self.redirect(urllib.unquote(next)) if next else self.redirect("/")
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。