Python Shopify多路径请求无效
我试图通过引用库,使用python实现shopify的多路径登录。相同的PHP代码工作正常,并提供了正确的多路径登录令牌(从中引用)。 当我使用结果中的url时,它会显示“无效的多路径请求”。我尝试了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
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)