欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

tornado登陆豆瓣代码实例

程序员文章站 2022-05-12 08:57:38
...
分享一段tornado登陆豆瓣的代码,只简单实现了登陆,并没有实现异步登陆。需要的网友可以自己将代码完善一下。

直接上代码:

#coding=utf8
import settings
import urllib
from tornado import httpclient
import json
  
class douban:
    authurl = 'https://www.douban.com/service/auth2/'
    user_info_url = 'https://api.douban.com/v2/user/~me'
  
    def get_authorization_code(self):
        params = {
            "client_id":settings.oauth2['douban']['key'],
            "redirect_uri":settings.oauth2['redirect_url'],
            "response_type":"code",
            "scope":"douban_basic_common",
        }
        return self.authurl+'auth?'+urllib.urlencode(params)
  
    def get_access_token(self,code):
        params = {
            "client_id":settings.oauth2['douban']['key'],
            "client_secret":settings.oauth2['douban']['sercet'],
            "redirect_uri":settings.oauth2['redirect_url'],
            "grant_type":"authorization_code",
            "code":code,
        }
        url = self.authurl+'token'
        http_client = httpclient.HTTPClient()
        req = httpclient.HTTPRequest(url,method='POST',body=urllib.urlencode(params))
        response = http_client.fetch(req)
        return json.loads(response.body)
              
    def get_user_info(self,access_token):
        url = 'https://api.douban.com/v2/user/~me'
        http_client = httpclient.HTTPClient()
        req = httpclient.HTTPRequest(url,headers={"Authorization":"Bearer "+access_token})
        response = http_client.fetch(req)
        return json.loads(response.body)