利用django oauth2_provider在自己的项目里实现token
2017-10-29 10:11
381 查看
先要确保在本地一个位置创建一个django应用,并确保本地安装有oauth2_provider包,并将oauth2_provider注册进django settings app;之后同步数据库就可以使用了;别忘了在进入数据库创建一个oauth2应用;具体操作,可以参考相关文档;剩下的不废话,直接粘代码:
# 引入需要使用的包
import sys import os import django
# 在自己的项目里将django项目引入环境变量 sys.path.append('/xxxx/xxxx/<django project/>') os.environ['DJANGO_SETTINGS_MODULE'] = '<django project/>.settings'django.setup()
# 引入需要用到的oauth2包
from oauthlib.oauth2.rfc6749.endpoints.pre_configured import Serverfrom oauth2_provider.oauth2_validators import OAuth2Validator
# 创建token
# username: 用户名
# password:密码
# client_id: 你自己建立的应用的client_id
# client_secret: 你自己建立的应用的client_secret
def create_token(username, password, client_id, client_secret):uri = '/oauth/token/'http_method = 'POST'body = r"username=%s&password=%s&grant_type=password&client_id=%s&client_secret=%s" %(username, password, client_id, client_secret)headers = {}extra_credentials = Noneheaders, token, status_code = Server(OAuth2Validator()).create_token_response(uri, http_method, body, headers, extra_credentials)return headers, token, status_code
# 刷新token
# password:
# refresh_token: 刷新token,从获取token方法中获取
# client_id: 你自己建立的应用的client_id
# client_secret: 你自己建立的应用的client_secret
def refresh_token(refresh_token, client_id, client_secret):uri = '/oauth/token/'http_method = 'POST'body = r"refresh_token=%s&client_id=%s&client_secret=%s&grant_type=refresh_token" %(refresh_token, client_id, client_secret)headers = {}extra_credentials = Noneheaders, token, status_code = Server(OAuth2Validator()).create_token_response(uri, http_method, body, headers, extra_credentials)#print Server(OAuth2Validator()).create_token_response(uri, http_method, body, headers, extra_credentials)return headers, token, status_code
相关文章推荐
- 自己在项目中的学习总结:利用工厂模式+反射机制+缓存机制,实现动态创建不同的数据层对象接口
- 【业务】Vue项目里利用md5的来实现一个权限系统的思路记录
- 利用反射原理和IExtenderProvider来实现WebControl与后台类的自动数据交换
- c中利用字符串操作实现用户自己输入文件名
- Java项目开发心得(一):利用Java技术实现查询手机号码归属地
- spring oauth2 ,spring security整合oauth2.0 JdbcTokenStore实现 解决url-pattern .do .action
- 第8周项目一-实现复数类中的运算符重载(利用类的友元函数)
- django 快速实现登陆,接着注册的项目写(五)
- pdf417项目:matlab利用仿射变换实现图片的旋转变换
- 带你学开源项目:OkHttp--自己动手实现okhttp
- 利用SVN的post-commit钩子实现多项目自动同步
- 项目笔记:3.利用分布试存储(glusterfs)实现页面一致性
- 利用Django中的url方法实现地址动态拼接自动生成超链接地址
- 扩展Django:实现自己的manage命令
- 利用SVN的post-commit钩子实现多项目自动同步
- 利用AJAX开源项目 在网页里播放视频实现方法
- 利用SVN的post-commit钩子实现多项目自动同步
- 利用SVN的post-commit钩子实现多项目自动同步
- 带你学开源项目:OkHttp–自己动手实现OkHttp
- 利用百度地图实现项目中的全球定位