Python Shopify多路径请求无效

Python Shopify多路径请求无效,python,php,shopify,Python,Php,Shopify,我试图通过引用库,使用python实现shopify的多路径登录。相同的PHP代码工作正常,并提供了正确的多路径登录令牌(从中引用)。 当我使用结果中的url时,它会显示“无效的多路径请求”。我尝试了Shopify社区建议的所有可能的解决方案。如何解决这个问题? 代码如下: class Multipass: def __init__(self, secret): key = SHA256.new(secret.encode('utf-8')).digest() self.enc

我试图通过引用库,使用python实现shopify的多路径登录。相同的PHP代码工作正常,并提供了正确的多路径登录令牌(从中引用)。 当我使用结果中的url时,它会显示“无效的多路径请求”。我尝试了Shopify社区建议的所有可能的解决方案。如何解决这个问题?

代码如下:

class Multipass:
def __init__(self, secret):
    key = SHA256.new(secret.encode('utf-8')).digest()
    self.encryptionKey = key[0:16]
    self.signatureKey = key[16:32]

def generateToken(self, customerDataHash):
    customerDataHash['created_at'] = datetime.datetime.utcnow().isoformat()
    cipherText = self.encrypt(json.dumps(customerDataHash))
    return urlsafe_b64encode(cipherText + self.sign(cipherText))

def generateURL(self, customerDataHash, url):
    token = self.generateToken(customerDataHash)
    return '{0}/account/login/multipass/{1}'.format(url, token)

def encrypt(self, plainText):
    plainText = self.pad(plainText)
    iv = get_random_bytes(AES.block_size)
    cipher = AES.new(self.encryptionKey, AES.MODE_CBC, iv)
    return iv + cipher.encrypt(plainText.encode('utf-8'))

def sign(self, secret):
    return HMAC.new(self.signatureKey, secret, SHA256).digest()

def pad(self, s):
    return s + (AES.block_size - len(s) % AES.block_size) * chr(AES.block_size - len(s) % AES.block_size)
和调用函数

data = JSONParser().parse(request)
customer_data = dict(email=data['email'], return_to=data['returnUrl'], first_name=data['firstName'], last_name=data['lastName'], identifier=data['username'], company=data['companyName'], phone=data['mobile'])
if data['set_address']:
    address = {"first_name": data['firstName'], "last_name": data['lastName'], "phone": data['mobile'], "address1": data['address'],
               "city": data['city'],"state": data['state'], "country": data['country'], "pincode": data['pincode'], "company":  data['companyName']}
    customer_data["addresses"] = address
multipass = Multipass(SHOPIFY_SECRET)
token = multipass.generateToken(customer_data)
link = "{}account/login/multipass/{}".format(SHOPIFY_ROOT_URL, token)
if token:
    data = {"token": token, "link": link}
    response = helper.generateStandardResponse(0, "Token generated successfully", data, True)
    return Response(response, status=status.HTTP_200_OK)
else:
    response = helper.generateStandardResponse(105, "Error in generating token", {}, False)
    return Response(response, status=status.HTTP_200_OK)