去微信服务器取openid和session_key
class UserCreate(generics.CreateAPIView):
serializer_class = UserSerializer
def create(self, request, *args, **kwargs):
js_code = self.request.data['code']
appid=''
secret=''
requestString='https://api.weixin.qq.com/sns/jscode2session?appid={APPID}&secret={SECRET}&js_code={JSCODE}&grant_type=authorization_code'.format(APPID=appid,SECRET=secret,JSCODE=js_code)
r = requests.get(requestString)
r=r.json()
print(r['openid'])
r
r.json
要取出值使用
r=r.json
r['openid']
这一个class的完整代码:
class UserCreate(generics.CreateAPIView):
serializer_class = UserSerializer
def create(self, request, *args, **kwargs):
js_code = self.request.data['code']
appid=''
secret=''
requestString='https://api.weixin.qq.com/sns/jscode2session?appid={APPID}&secret={SECRET}&js_code={JSCODE}&grant_type=authorization_code'.format(APPID=appid,SECRET=secret,JSCODE=js_code)
r = requests.get(requestString)
r=r.json()
openid=r['openid']
#User是Django自带的用户管理表,通过from django.contrib.auth.models import User引入
#Token表from rest_framework.authtoken.models import Token,我用了Django rest framework
#下面代码的逻辑:从User表取出/创建一条username=openid的记录,然后根据User表的这条记录取出/创建token表的一条记录。这样User表中每个用户都有一个token.
try:
#如果注册了,可以直接从User表获取到记录
auth_user = User.objects.get(username=openid)
except:
#如果没有注册就现在create
auth_user = User.objects.create(username=openid)
try:
#如果token表有token值就取token出来
token = Token.objects.get(user=auth_user)
except:
#如果token表没有token值就创建token
token = Token.objects.create(user=auth_user)
return Response(token.key, status=status.HTTP_201_CREATED)
热门评论
你好 最近也在做DRF小程序登录,请问能分享下你是怎么写的吗?
取出来之后解密了,怎么在django后台注册并拿到jwt?