简介
研究之前python获取access_token都是通过调用java代码来进行获取的,同时需要安装java与python环境,十分不便,为此经过本人研究及经过测试,可以通过纯python的加密算法实现api获取token,以下为使用步骤。使用环境仅限NCC2111版本,其余版本可能因加密算法不同,进行变更。
环境准备
1、python环境3.7,理论上在python3环境均可使用
2、安装hashlib,pycryptodome依赖库
pip install hashlib
pip install pycryptodome
3、填写第三方注册对应信息
4、运行后即可获取access_token
5、显示
{‘success’: True, ‘data’: {‘access_token’: ‘8cfa1145a2f2190c0e00c6b2ef841a88’, ‘expires_in’: 1000000, ‘refresh_token’: ‘8cfa1145a2f2190c0e00c6b2ef841a88’, ‘security_key’: ‘m4y5fBrSHY2bc4lLg5X8L/UTJStwAatoF8BobjpHPn8=’, ‘ts’: 1683531015116, ‘grant_type’: ‘client_credentials’}, ‘code’: ‘1000000000’, ‘message’: None, ‘errorStack’: None}
类似信息,即为获取成功
废话不多说,直接上代码
#!/usr/bin/env python
# -- coding: utf-8
# @Author : wuhaiwen
# @Time : 2023-7-17 16:57
import hashlib
from django.core.cache import cache
from Cryptodome.Signature import pss
from Cryptodome.Hash import SHA256
from Cryptodome.Cipher import PKCS1_OAEP
from Cryptodome.PublicKey import RSA
import base64
import requests
import json
class NCC:
# 服务器地址及端口号 填写
ip='' # 请求NCCloud 2111服务器ip地址
url='/nccloud/opm/accesstoken' # 请求NCCloud 2111服务器accesstoken地址,一般为固定地址
pubkey=''
client_secret='' #第三方应用秘钥,对请求加签使用,对应系统中的app_secret.需要对数据进行加密(非对称加密,公钥通过第三方应用的public_key获取)
# client_id 填写
client_id='' # 对应app_id
# 登陆模式
grant_type='client_credentials' # 客户端模式
# # 账套编码
biz_center=''
# 租户id
username='002'
def