如何使用店面API Shopify的代理令牌



我做了一个基于shopify的storefront API的节点应用。然而,每个ip地址都有速率限制。因此,我可以在一定的时间内执行某些Graphql查询。例如,密码重置只工作2次,之后会显示Limit Exceeded错误,之后我需要等待60秒。问题是,我已经将应用程序部署为lambda函数,并且IP将始终相同。我在storefront API上找到了解决方案,说明我需要在发送请求时使用委托令牌和用户IP作为头。但我不太明白。

有人能帮我如何在节点应用程序中使用委托令牌吗?这样,无论何时发送请求,都会使用客户端浏览器IP而不是AWS服务器

好吧,相信我已经想通了。

您要做的第一件事是使用这个端点(POST(创建一个委托令牌。https://{{shopify_store_name}}.myshopify.com/admin/access_tokens/delegate.json

你的帖子应该是这样的:

{
"delegate_access_scope": ["unauthenticated_write_checkouts"]
}

我建议你进入你的shopify店面API,查看店面API拥有哪些权限,并使用类似的东西。请注意,您的管理员API至少需要拥有这些权限才能授予它们。

还要注意,customerRecover需要";未经认证的写入检查";被调用的权限。

在您创建该令牌之后(这就是我遇到的问题(从您的头中删除X-Shopify-Storefront-Access-Token,并用Shopify-Storefront-Private-Token替换它

删除:

X-Shopify-Storefront-Access-Token : {{{Storefront Token}}}

并替换为:

Shopify-Storefront-Private-Token : {{{Your delegate token}}}

您还需要在标题中转发您的客户API地址,方法是将其从上下文中抓取并放入标题以及中

Shopify-Storefront-Buyer-IP' : this.sourceIp

在我这样做之后,我注意到我对忘记密码的速率限制是基于点击它的客户端的IP,而不是被抑制的服务器IP。

希望这能有所帮助!

最新更新