根据code去微信服务器取openid
去微信服务器取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)
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦