|
@@ -11,6 +11,7 @@ from Ansjer.config import LOGGER
|
|
|
from Ansjer.config import SERVER_DOMAIN_SSL
|
|
|
from django.views.generic.base import View
|
|
|
|
|
|
+from Controller.WeChatMiniProgram.CommonController import CommonObj
|
|
|
from Model.models import WeChatMiniProgram, Device_User, Device_Info, DeviceNameLanguage
|
|
|
from Object.Enums.WeChatEnum import WeChatMiniProgramAPIEnum, WeChatMiniProgramConfigEnum
|
|
|
from Object.RedisObject import RedisObject
|
|
@@ -61,7 +62,7 @@ class UserView(View):
|
|
|
openid = wechat_mini_program_qs[0]['openid']
|
|
|
session_key = wechat_mini_program_qs[0]['session_key']
|
|
|
signature = cls.generate_signature(session_key)
|
|
|
- access_token = cls.get_access_token()
|
|
|
+ access_token = CommonObj.get_access_token()
|
|
|
params = {
|
|
|
'openid': openid,
|
|
|
'access_token': access_token,
|
|
@@ -83,42 +84,10 @@ class UserView(View):
|
|
|
return False
|
|
|
|
|
|
@staticmethod
|
|
|
- def get_access_token():
|
|
|
- """
|
|
|
- 获取小程序全局唯一后台接口调用凭据,token有效期为7200s
|
|
|
- https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-access-token/getAccessToken.html
|
|
|
- @return: access_token
|
|
|
- """
|
|
|
- try:
|
|
|
- redis_obj = RedisObject()
|
|
|
- access_token_key = WeChatMiniProgramConfigEnum.AccessTokenKey.value
|
|
|
- expires_time = redis_obj.get_ttl(access_token_key)
|
|
|
- # 如果有效时间大于十分钟,返回token,否则刷新token
|
|
|
- if expires_time > 10 * 60:
|
|
|
- access_token = redis_obj.get_data(access_token_key)
|
|
|
- return access_token
|
|
|
- else:
|
|
|
- params = {
|
|
|
- 'grant_type': 'client_credential',
|
|
|
- 'appid': WeChatMiniProgramConfigEnum.AppID.value,
|
|
|
- 'secret': WeChatMiniProgramConfigEnum.AppSecret.value
|
|
|
- }
|
|
|
- r = requests.get(url=WeChatMiniProgramAPIEnum.getAccessTokenAPI.value, params=params, timeout=5)
|
|
|
- result = eval(r.content)
|
|
|
- access_token = result.get('access_token')
|
|
|
- assert access_token
|
|
|
- expires_in = result.get('expires_in')
|
|
|
- # 保存到Redis
|
|
|
- redis_obj.set_ex_data(key=access_token_key, val=access_token, expire=expires_in)
|
|
|
- return access_token
|
|
|
- except Exception as e:
|
|
|
- LOGGER.info('微信小程序获取token异常:error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
- return None
|
|
|
-
|
|
|
- @classmethod
|
|
|
- def get_phone_number(cls, request_dict, response):
|
|
|
+ def get_phone_number(request_dict, response):
|
|
|
"""
|
|
|
获取手机号码
|
|
|
+ https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-info/phone-number/getPhoneNumber.html
|
|
|
@param request_dict:
|
|
|
@param response:
|
|
|
@return: res
|
|
@@ -127,7 +96,7 @@ class UserView(View):
|
|
|
if not code:
|
|
|
return response.json(444)
|
|
|
try:
|
|
|
- access_token = cls.get_access_token()
|
|
|
+ access_token = CommonObj.get_access_token()
|
|
|
url = WeChatMiniProgramAPIEnum.getPhoneNumberAPI.value.format(access_token)
|
|
|
data = {
|
|
|
'code': code
|