Python - 向 oauth/oauth2 添加新类/函数

问题描述 投票:0回答:1

在我之前遇到的关于将 NetSuite API 的 SHA1 升级到 SHA256 的问题之后,我需要采取的步骤之一似乎是添加以下类:

SignatureMethod_HMAC_SHA256

以及更新 hmac.new 函数包含 sha256。

hashed = hmac.new(key, raw, sha256)

然而,我要问的是在哪里访问所述Python的库,以及打开哪些文件来向它们添加新的类和函数。

python oauth sha256 sha1 hmac
1个回答
0
投票

1.- 安装库 oauth2

pip 安装 oauth2

2.- 在 Windows 上转到该模块的

__init__.py

C:\Users\ASUS\AppData\Local\Programs\Python\Python39\Lib\site-packages\oauth2\__init__.py

3.- 看这一行:

from hashlib import sha1

替换为:

from hashlib import sha1,sha256

4.- 看这一行:

def generate_nonce(length=8):

在此功能下方添加一个新功能:

def generate_nonce(length=11):
    """Generate pseudorandom number."""
    return ''.join([str(random.SystemRandom().randint(0, 9)) for i in range(length)])

5.- 在文件末尾也添加此类:

class SignatureMethod_HMAC_SHA256(SignatureMethod):
    name = 'HMAC-SHA256'
    def signing_base(self, request, consumer, token):
        if (not hasattr(request, 'normalized_url') or request.normalized_url is None):
            raise ValueError("Base URL for request is not set.")
        sig = (
            escape(request.method),
            escape(request.normalized_url),
            escape(request.get_normalized_parameters()),
        )
        key = '%s&' % escape(consumer.secret)
        if token:
            key += escape(token.secret)
        raw = '&'.join(sig)
        return key.encode('ascii'), raw.encode('ascii')
    def sign(self, request, consumer, token):
        """Builds the base signature string."""
        key, raw = self.signing_base(request, consumer, token)
        hashed = hmac.new(key, raw, sha256)
        # Calculate the digest base 64.
        return binascii.b2a_base64(hashed.digest())[:-1]
© www.soinside.com 2019 - 2024. All rights reserved.