Odoo微信網(wǎng)頁授權(quán)、單點登錄
時間:2022-08-06 20:36:02 | 來源:網(wǎng)站運營
時間:2022-08-06 20:36:02 來源:網(wǎng)站運營
本文講解一下通過微信公眾號,設(shè)置菜單,然后跳轉(zhuǎn)到odoo頁面的方法,以下是部門代碼,僅供參考。
# -*- coding: utf-8 -*-from odoo
import http
from odoo.http
import request
from .handlers
import auto_reply, event_reply
import logging
_logger = logging.getLogger(__name__)
class WeiXinLogin(http.Controller):
def __init__(self):
param = request.env()[
'ir.config_parameter']
self.wx_appid = param.get_param(
'wx_appid')
or ''self.wx_AppSecret = param.get_param(
'wx_AppSecret')
or ''from ..rpc
import oa_client
oa_client.init_oa_client(self.wx_appid, self.wx_AppSecret)
@http.route(
'/wx/login', type=
'http', auth=
"none", methods=[
'GET',
'POST'], csrf=
False)
def wx_login(self, **kwargs):
res_code=self.get_code()
res_token=self.get_token(res_code)
res_check=self.check_token(res_token)
res_user=self.get_user(res_check)
openid=res_user[
'openid']
def send_url(self,url,params):
try:
res = request.get(url, params=params).json()
return res
except Exception, e:
http://_logger.info(
"獲取參數(shù)錯誤:")
def get_code(self):
url=
'https://open.weixin.qq.com/connect/oauth2/authorize'params = {
'appid': self.wx_appid,
'secret': self.wx_AppSecret,
'response_type':
'code',
'scope':
'snsapi_base',
'#wechat_redirect':
''}
# 第一步獲取codereturn self.send_url(url,params)
def get_token(self,res_code):
# 2.通過code換取網(wǎng)頁授權(quán)access_tokenurl =
u'https://api.weixin.qq.com/sns/oauth2/access_token'params = {
'appid': self.wx_appid,
'secret': self.wx_AppSecret,
'code': res_code[
'code'],
'grant_type':
'authorization_code'}
return self.send_url(url,params)
def check_token(self,res_token):
#3.檢驗授權(quán)憑證(access_token)是否有效url=
'https://api.weixin.qq.com/sns/auth'params = {
'openid': res_token[
'openid'],
'access_token':res_token[
'access_token']
}
check_res = self.send_url(url,params)
if check_res[
'errcode']==0:
return res_token
else:
# 如果access_token超時,那就刷新url=
'https://api.weixin.qq.com/sns/oauth2/refresh_token?'params = {
'appid': self.wx_appid,
'grant_type':
'refresh_token',
'refresh_token':res_token[
'refresh_token']
}
return self.send_url(url, params)
def get_user(self,res_check):
url =
u'https://api.weixin.qq.com/sns/userinfo'params = {
'access_token': res_check[
"access_token"],
'openid': res_check[
"openid"],
}
# 4.拉取用戶信息return self.send_url(url, params)