根据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)
點(diǎn)擊查看更多內(nèi)容
為 TA 點(diǎn)贊
評(píng)論
評(píng)論
共同學(xué)習(xí),寫下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦