python3.6 Django 微信 OAuth 网页授权接入 Wechatpy 框架



基本配置

wechatconfig.py

import json
import time

import requests
from wechatpy import WeChatClient
from wechatpy.client.api.jsapi import WeChatJSAPI
from wechatpy.client.api.media import WeChatMedia
from wechatpy.oauth import WeChatOAuth
from wechatpy.utils import random_string, to_text
from wx_libs.sign import Sign

基本配置



views.py

r = redis.Redis(host=127.0.0.1, port=6379)  # 创建redis对象
当然 授权获取用户信息 ,可以写一个装饰器,这样就不用每次都授权(直接将上面1.02稍微修改下就好了)。上面代码都有些将用户信息存至session中,不过JavaScript获取不到session中的数据 , django前后端分离的话,单独写一个或取用户信息的接口就OK了!时间有限写得很粗糙,将就下吧。。。。

微信官方获取签名方法 import json import time import requests from wechatpy import WeChatClient from wechatpy.client.api.jsapi import WeChatJSAPI from wechatpy.client.api.media import WeChatMedia from wechatpy.oauth import WeChatOAuth from wechatpy.utils import random_string, to_text from wx_libs.sign import Sign 基本配置 views.py r = redis.Redis(host=127.0.0.1, port=6379) # 创建redis对象 当然 授权获取用户信息 ,可以写一个装饰器,这样就不用每次都授权(直接将上面1.02稍微修改下就好了)。上面代码都有些将用户信息存至session中,不过JavaScript获取不到session中的数据 , django前后端分离的话,单独写一个或取用户信息的接口就OK了!时间有限写得很粗糙,将就下吧。。。。 微信官方获取签名方法
import time
import random
import string
import hashlib


class Sign:
    def __init__(self, jsapi_ticket, url):
        self.ret = {
            nonceStr: self.__create_nonce_str(),
            jsapi_ticket: jsapi_ticket,
            timestamp: self.__create_timestamp(),
            url: url
        }

    def __create_nonce_str(self):
        return .join(random.choice(string.ascii_letters + string.digits) for _ in range(15))

    def __create_timestamp(self):
        return int(time.time())

    def sign(self):
        string = &.join([%s=%s % (key.lower(), self.ret[key]) for key in sorted(self.ret)])
        print(string)
        self.ret[signature] = hashlib.sha1(string.encode(utf-8)).hexdigest()
        return self.ret

if __name__ == __main__:
    Sign()



import time import random import string import hashlib class Sign: def __init__(self, jsapi_ticket, url): self.ret = { nonceStr: self.__create_nonce_str(), jsapi_ticket: jsapi_ticket, timestamp: self.__create_timestamp(), url: url } def __create_nonce_str(self): return .join(random.choice(string.ascii_letters + string.digits) for _ in range(15)) def __create_timestamp(self): return int(time.time()) def sign(self): string = &.join([%s=%s % (key.lower(), self.ret[key]) for key in sorted(self.ret)]) print(string) self.ret[signature] = hashlib.sha1(string.encode(utf-8)).hexdigest() return self.ret if __name__ == __main__: Sign()
经验分享 程序员 微信小程序 职场和发展