本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《
阿里云开发者社区用户服务协议
》和
《
阿里云开发者社区知识产权保护指引
》。如果您发现本社区中有涉嫌抄袭的内容,填写
侵权投诉表单
进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
大家好,我是yma16,不止前端,本文将介绍微信小程序结合django获取openid的功能实现。
⭐ 微信的openid获取流程
因为微信号的openid可以锁定微信账号,所以用它作为用户一个字段实现注册登录
openid获取分两个步骤
客户端前端发起请求获取code
服务器后端用code去访问api获取
⭐步骤分解
微信小程序获取code
在前端页面发起request去获取code
wx.login({
success(res) {
if (res.code) {
const path = '/common-api/wxProgramLogin/'
wx.request({
url: baseUrl + path,
method: 'GET',
data: {
code: res.code
success: (res => {
console.log('res', res)
console.log('res.data', res.data.data)
wx.setStorageSync('currentOpenid', res && res.data ? res.data.data : null)
resolve && resolve()
wx.hideLoading()
}),
fail: r => {
console.log('cloud r', r)
wx.hideLoading()
reject && reject()
} else {
console.log('登录失败!' + res.errMsg)
wx.hideLoading()
reject && reject()
fail: r => {
console.log('r', r)
wx.hideLoading()
reject && reject()
requests访问code2Session接口
code2Session接口需要后端发起
django中的实现
views的视图
def get_openid(code):
appid='微信小程序的appid'
secret='小程序的密钥'
js_code=code
grant_type='authorization_code'
url = 'https://api.weixin.qq.com/sns/jscode2session?appid={appid}&secret={secret}&js_code={js_code}&grant_type={grant_type}'
url=url.format(appid=appid,secret=secret,js_code=js_code,grant_type=grant_type)
data = {
"code": code
ret = requests.post(url,data=data)
return ret.json()
def wx_program_login(request):
if request.method == 'GET':
try:
code = request.GET.get('code', default='')
ret_json = get_openid(code)
return JsonResponse({
'code': 200,
'msg': 'success',
'data': ret_json
except Exception as e:
return JsonResponse({
'code': 500,
'msg':str(e),
'data': '获取微信openid失败'
return JsonResponse(
'code': 500,
'msg': 'method is not allowed',
'data': []
在url中把wx_program_login暴露出去
from django.contrib import admin
from .views import wx_program_login
from django.urls import path,include
urlpatterns = [
path(r'wxProgramLogin/', wx_program_login)
呼应了微信小程序中wx.request的请求wxProgramLogi换取opendid
测试成功!
根据code获取openid成功!
感谢你的阅读,如有错误,欢迎提出!