微信小程序_获取openid联动django实现

简介: 微信小程序_获取openid联动django实现

@[TOC]

⭐ 前言

大家好,我是yma16,不止前端,本文将介绍微信小程序结合django获取openid的功能实现。

⭐ 微信的openid获取流程

因为微信号的openid可以锁定微信账号,所以用它作为用户一个字段实现注册登录
openid获取分两个步骤

  1. 客户端前端发起请求获取code
  2. 服务器后端用code去访问api获取

image.png

⭐步骤分解

微信小程序获取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()
        // wx.hideLoading()
      }
    })

image.png

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成功!
image.png

⭐结束

感谢你的阅读,如有错误,欢迎提出!
image.png

目录
相关文章
|
小程序 JavaScript
小程序云开发获取openid及出现openid是undefind的坑
小程序云开发获取openid及出现openid是undefind的坑
145 0
|
11月前
|
小程序 前端开发 JavaScript
微信小程序(二十一)小程序登录获取openid和unionid
在微信小程序中,因为各种各样的原因我们会需要获取到用户的openid或者unionid下面就简单来讲一下在小程序中如何获取openid和unionid。 步骤一:微信登录获取登录凭证
941 0
|
1月前
|
JSON 小程序 应用服务中间件
微信的openid是用户的唯一id吗?
【10月更文挑战第4天】微信的openid是用户的唯一id吗?
361 5
|
4月前
|
小程序 开发者
uniapp 获取微信的 openid(借助 uniCloud)
uniapp 获取微信的 openid(借助 uniCloud)
505 0
|
4月前
|
小程序 JavaScript
【微信小程序-原生开发】实用教程11 - 用户登录鉴权(含云函数的创建、删除、使用,通过云函数获取用户的openid)
【微信小程序-原生开发】实用教程11 - 用户登录鉴权(含云函数的创建、删除、使用,通过云函数获取用户的openid)
71 0
|
6月前
|
安全 小程序 Java
java实现微信服务(公众)号用户关注时,获取openid,安全模式下的加密解密实现
java实现微信服务(公众)号用户关注时,获取openid,安全模式下的加密解密实现
|
小程序 PHP
10行PHP代码快速获取小程序openid
10行PHP代码快速获取小程序openid
235 0
|
小程序 前端开发
uniapp+node.js(express框架)获取微信小程序的openid
uniapp+node.js(express框架)获取微信小程序的openid
211 0
|
小程序 API
零基础学小程序007---小程序获取用户openid
零基础学小程序007---小程序获取用户openid
161 0
|
小程序 JavaScript PHP
基于PHP方法,微信公众号小程序获取code,access_token,openid,用户信息
基于PHP方法,微信公众号小程序获取code,access_token,openid,用户信息
277 0

热门文章

最新文章