微信小程式登入流程

2022-05-06 20:39:06 字數 3543 閱讀 3102

前言:openid與unionid

場景: 假設你們公司有2個小程式。但是你們老闆想把使用者做統一處理。比如新使用者登入任意乙個小程式,就傳送傳送禮包。但是只要再乙個小程式上另過了,就不能再另乙個上面領取。

unionnid:乙個使用者在多個小程式有唯一的標識

1、小程式端執行wx.login()獲取code

2、將code通過wx.request傳送到後端,後端呼叫auth.code2session介面得到openid和session_key

3、後端得到openid和session_key,進行儲存,並自定義登入狀態,我們生成乙個key與openid和session_key相繫結。key相當於token把token返回到小程式中

4、小程式端儲存token,然後下次請求如果需要登入狀態,就把token帶上。

發起的鏈結請求引數屬性型別

預設值必填

說明string

是secret

string

是js_code

string

是登入時獲取的 code

grant_type

string

是授權型別,此處只需填寫 authorization_code

返回值

返回的 json 資料報

屬性型別

說明openid

string

使用者唯一標識

session_key

string

會話金鑰

unionid

string

使用者在開放平台的唯一識別符號,在滿足 unionid 下發條件的情況下會返回,詳見 unionid 機制說明。

errcode

number

錯誤碼errmsg

string

錯誤資訊

errcode 的合法值值說明

最低版本

-1系統繁忙,此時請開發者稍候再試

0請求成功

40029

code 無效

45011

頻率限制,每個使用者每分鐘100次

接著上述我們對於路徑進行拼接成他需要的內容

wx_login.py

from . import

settings

import

requests

defget_login_info(code):

# response =requests.get(code_url)

json_response =response.json()

print("

json_response

",json_response)

if json_response.get("

session_key"):

return

json_response

else

:

return false

settings.py

wxc35e10f7101fafa

"1479996b514da2428a89352717ae7c

"code2session="

"

from rest_framework.views import

apiview

from rest_framework.response import

response

wx_login

from django.core.cache import

cache

from .models import

wxuser

import

time

import

hashlib

class

login(apiview):

defpost(self,request):

code = request.data.get('

code')

print(code,type(code)) #

061j8by70szppc1yynx70kcuy70j8byp

ifnot

code:

return response()

else

: user_data =wx_login.get_login_info(code)

#print(user_data)

ifuser_data:

val = user_data['

session_key

'] + "

&" + user_data['

openid']

md5 =hashlib.md5()

md5.update(str(time.clock()).encode(

"utf-8"))

md5.update(user_data[

"session_key

"].encode("

utf-8"))

#生成乙個唯一標識的key,用來給前台

key =md5.hexdigest()

#設定快取減少資料庫的壓力

cache.set(key,val)

has_user = wxuser.objects.filter(openid=user_data['

openid

']).first()

ifnot

has_user:

wxuser.objects.create(openid=user_data['

openid

']) #

將唯一標識儲存到資料庫

return

response(

})else

:

return response()

onlaunch:

function

() ,

method:"post",

success(e)})}

}),globaldata:

})

微信小程式登入流程 微信登入

提高使用者體驗 制定產品策略 token 登入態是個邏輯詞彙,token可以理解為登入態的具象化 資料化,在上面的流程圖中,可以看到token是由開發者伺服器建立的乙個字元,而且需要跟openid和session key相關聯,關聯完成之後開發者伺服器將 token下發到客戶端,客戶端儲存在本地,後...

微信小程式登入流程

wx.login else 省略一下配置路由啥的 class login apiview def post self,request code request.data.get code print code,type code 061hmtlg0haq6d2hoykg0dlhlg0hmtlh 屬性...

微信小程式登入流程詳細記錄

一.小程式登入基本流程介紹 1.首先放一張官方文件的流程圖 過程 1.小程式端呼叫 wx.login 獲取 code 臨時登入憑證 code 只能使用一次 這一步獲取的 code 作用是表示使用者已授權獲取使用者資訊,但使用者資訊分為 非敏感資訊 和 敏感資訊,這兩者區別稍後會介紹到。3.後台呼叫 ...