前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django实战-服务端登录验证-code换取openid

Django实战-服务端登录验证-code换取openid

作者头像
小团子
发布2019-08-30 13:32:33
9160
发布2019-08-30 13:32:33
举报
文章被收录于专栏:数据云团数据云团

Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。

在知道小程序授权登录流程之后,按照每个步骤编写授权的业务代码。完成了小程序端的授权登录,需要将 code 通过 POST 请求传给服务端,再用appid,secret,js_code分别替换如上接口地址的APPID、SECRET、JSCODE,其它不变,组装成完整的地址。

https://api.weixin.qq.com/sns/jscode2session?appid=appid&secret=secret&js_code=code&grant_type=authorization_code

在去请求接小程序登录的接口地址前,需要先了解一个知识点。后端通过JSON web token方式登录,把token和用户id传回小程序。那问题就来了,用什么来存储 token,Django 的项目一般都是视图+模板一套出来,像这种不通过模板的值,该如何传递呢?

一、Session保存会话数据

Session和Cookie的关系是什么?

Session是基于Cookie, 是因为把数据写入session时将会生成一个随机字符串,并将随机字符串存入cookie,再读取时,是先从cookie中获取这个随机字符串,在去获取session内容。在SessionMiddleware中的process_request方法里面可以看到。

二、服务端登录验证

流程

1.使用微信小程序登录和获取用户信息Api接口

2.把Api获取的用户资料和code发送给django后端

3.通过微信接口把code换取成openid

4.后端将openid作为用户名和密码

5.后端通过JSON web token方式登录,把token和用户id传回小程序

6.小程序将token和用户id保存在storage中

下次请求需要验证用户身份的页面时,在header中加入token这个字段

在前面一小节中,介绍了前两步Django实战-小程序服务端登录验证-上

③ 微信接口把code换取成openid

Session就是保存了会话里面的数据,通过request.session进行获取。

导入 json、requests 模块,将APPID、SECRET、JSCODE,组装成完整的地址。通过requests 的 GET 请求换取用户openid。

import json
import requests
def code2session(appid, code):
    API = "https://api.weixin.qq.com/sns/jscode2session"
    params = "appid=%s&secret=%s&js_code=%s&grant_type=authorization_code" % \
             (appid, settings.WX_APP_SECRET, code)
    url = API + "?" + params
    response = requests.get(url=url)
    data = json.loads(response.text)
    return data
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档