最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python代碼實現(xiàn)小程序登錄流程時序總結

 更新時間:2022年04月12日 18:02:53   作者:Jeff的技術棧  
這篇文章主要為大家介紹了python代碼實現(xiàn)小程序的登錄案例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪

官方文檔

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html

小程序登錄

小程序可以通過微信官方提供的登錄能力方便地獲取微信提供的用戶身份標識,快速建立小程序內的用戶體系。

登錄流程時序

說明:

  • 調用wx.login()獲取臨時登錄憑證code,并回傳到開發(fā)者服務器。
  • 調用auth.code2Session接口,換取用戶唯一標識 OpenID和會話密鑰 session_key。

之后開發(fā)者服務器可以根據(jù)用戶標識來生成自定義登錄態(tài),用于后續(xù)業(yè)務邏輯中前后端交互時識別用戶身份。

注意:

  • 會話密鑰session_key是對用戶數(shù)據(jù)進行加密簽名的密鑰。為了應用自身的數(shù)據(jù)安全,開發(fā)者服務器不應該把會話密鑰下發(fā)到小程序,也不應該對外提供這個密鑰。
  • 臨時登錄憑證 code 只能使用一次

小程序的登錄總結

1 小程序端執(zhí)行wx.login()獲取code

2 將1中的code發(fā)送到后端,后端調用auth.code2Session這個接口,得到openid和session_key

3 自定義登入狀態(tài),我們生成一個key與openid和session_key相綁定。把key返回到小程序中

4 小程序端保存,然后下次請求需要登入的接口的時候,把key帶上。

案例

# app.js的onLaunch中   因為登錄是用戶感覺不到的
App({
  onLaunch: function () {
    let that = this
    // 登錄
    wx.login({
      success: res => {
        // 發(fā)送 res.code 到后臺換取 openId, sessionKey, unionId
        console.log(res.code)   //拿到code
        wx.request({
          url:that.globalData.baseurl+"/login/",
          data:{'code':res.code},
          method:'POST',
          success(e){
            console.log(e.data)
            // wx.setStorageSync("token", e.data.data.token)
            
          }
        })
      }
    }),
    globalData: {
    userInfo: null,
    baseurl:"http://127.0.0.1:8000"
  }
# dango后臺中
# urls.py 路由中
path('login/', user.Login.as_view()),
# user.py中
from rest_framework.views import APIView
from rest_framework.response import Response
from api.wx import wx_login
import hashlib, time
from django.core.cache import cache
from api.models import Wxuser
class Login(APIView):
    def post(self, request):
        param = request.data
        print(request.data)
        if not param.get('code'):
            return Response({"status": 1, "msg": '缺少參數(shù)'})
        else:
            code = param.get("code")
            user_data = wx_login.get_login_info(code)
            if user_data:
                val = user_data['session_key'] + "&" + user_data['openid']
                md5 = hashlib.md5()
                md5.update(str(time.clock()).encode("utf-8"))
                key = md5.hexdigest()
                cache.set(key, val)  # 放進內存redis庫中,把key傳給前端當token.下次前臺帶著key就能拿到val
                has_user = Wxuser.objects.filter(openid=user_data['openid']).first()  # 判斷openid是否存在
                if not has_user:
                    Wxuser.objects.create(openid=user_data['openid'])
                return Response({
                    "status": 0,
                    "msg": "ok",
                    "data": {"token": key}
                })
            else:
                return Response({"status": 2, "data": "無效的code"})
# models.py中:
from django.db import models
class Wxuser(models.Model):
    id = models.AutoField(primary_key=True)
    openid=models.CharField(max_length=255)
    name = models.CharField(max_length=50)
    avatar = models.CharField(max_length=200)
    language = models.CharField(max_length=50)
    province = models.CharField(max_length=50)
    city = models.CharField(max_length=50)
    country = models.CharField(max_length=50)
    #gender = models.CharField(max_length=50)
    creat_time = models.DateTimeField(auto_now_add=True)
    update_time = models.DateTimeField(auto_now=True)
    def __str__(self):
        return self.openid
# settings.py中:自己注冊的微信小程序信息
AppId=""
AppSecret=""
code2Session="https://api.weixin.qq.com/sns/jscode2session?appid={}&secret={}&js_code={}&grant_type=authorization_code"
# wx_login.py中:
from api.wx import settings
import requests
def get_login_info(code):
    # 拼接路徑
    code_url = settings.code2Session.format(settings.AppId,settings.AppSecret,code)
    response = requests.get(code_url)  # 返回的是json數(shù)據(jù)
    json_response = response.json()    # 把json數(shù)據(jù)轉換為字典
    if json_response.get('session_key'):
        return json_response
    else:
        return False
# cache緩存配置redis數(shù)據(jù)庫

以上就是python代碼實現(xiàn)小程序登錄流程時序總結的詳細內容,更多關于python小程序登錄時序總結的資料請關注腳本之家其它相關文章!

相關文章

  • python UNIX_TIMESTAMP時間處理方法分析

    python UNIX_TIMESTAMP時間處理方法分析

    這篇文章主要介紹了python UNIX_TIMESTAMP時間處理方法,結合實例形式分析了Python針對UNIX_TIMESTAMP時間的常見運算技巧,需要的朋友可以參考下
    2016-04-04
  • Python數(shù)據(jù)分析基礎之異常值檢測和處理方式

    Python數(shù)據(jù)分析基礎之異常值檢測和處理方式

    這篇文章主要介紹了Python數(shù)據(jù)分析基礎之異常值檢測和處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • python生成requirements.txt文件的推薦方法

    python生成requirements.txt文件的推薦方法

    Python項目中必須包含一個requirements.txt文件,用于記錄所有依賴包及其精確的版本號,以便新環(huán)境部署,下面這篇文章主要給大家介紹了關于python生成requirements.txt文件的相關資料,需要的朋友可以參考下
    2022-07-07
  • Python實現(xiàn)的自定義多線程多進程類示例

    Python實現(xiàn)的自定義多線程多進程類示例

    這篇文章主要介紹了Python實現(xiàn)的自定義多線程多進程類,結合實例形式分析了Python多線程多進程的相關調用與使用操作技巧,需要的朋友可以參考下
    2018-03-03
  • python使用turtle繪制國際象棋棋盤

    python使用turtle繪制國際象棋棋盤

    這篇文章主要為大家詳細介紹了python使用turtle畫國際象棋棋盤,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 淺談Python3.10 和 Python3.9 之間的差異

    淺談Python3.10 和 Python3.9 之間的差異

    多年來,Python 進行了大量升級,并且在新版本中添加了許多功能。本文就詳細的介紹 一下Python3.10 和 Python3.9差異,感興趣的朋友可以了解一下
    2021-09-09
  • python中不能連接超時的問題及解決方法

    python中不能連接超時的問題及解決方法

    這篇文章主要介紹了python中不能連接超時的問題及解決方法,需要的朋友可以參考下
    2018-06-06
  • 解決python selenium3啟動不了firefox的問題

    解決python selenium3啟動不了firefox的問題

    今天小編就為大家分享一篇解決python selenium3啟動不了firefox的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python爬蟲入門教程--快速理解HTTP協(xié)議(一)

    python爬蟲入門教程--快速理解HTTP協(xié)議(一)

    http協(xié)議是互聯(lián)網(wǎng)里面最重要,最基礎的協(xié)議之一,我們的爬蟲需要經(jīng)常和http協(xié)議打交道。下面這篇文章主要給大家介紹了關于python爬蟲入門之快速理解HTTP協(xié)議的相關資料,文中介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • linux 下python多線程遞歸復制文件夾及文件夾中的文件

    linux 下python多線程遞歸復制文件夾及文件夾中的文件

    這篇文章主要介紹了linux 下python多線程遞歸復制文件夾及文件夾中的文件,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01

最新評論

祁门县| 寿宁县| 曲松县| 枝江市| 天全县| 栾城县| 蚌埠市| 安仁县| 西充县| 六枝特区| 天水市| 卢湾区| 图木舒克市| 汝南县| 涿州市| 祁阳县| 汉沽区| 新余市| 清涧县| 保德县| 樟树市| 临泽县| 西华县| 安阳县| 比如县| 阿瓦提县| 十堰市| 嘉定区| 元朗区| 清远市| 江阴市| 革吉县| 江山市| 安达市| 称多县| 日照市| 射阳县| 嘉善县| 湘潭市| 云霄县| 驻马店市|