本地Shopify应用文件部署至合作伙伴账户的技术咨询
解决Shopify私有应用本地文件部署与集成问题
一、先明确核心误区:Shopify合作伙伴后台不托管应用代码
首先要搞清楚:Shopify合作伙伴账户不会直接存放你的应用代码,私有应用的代码需要你自己部署到公网可访问的服务器上,Shopify只是通过API和你的应用进行交互。所以你不需要把文件上传到合作伙伴账户,而是要把代码部署到外部服务器,再和Shopify后台做配置关联。
可选的部署工具/方案
- 传统PHP空间:用FTP工具(比如FileZilla)把你的4个文件和
inc文件夹直接上传到服务器的网站根目录即可。 - 云平台:像Heroku(支持PHP部署,用Git推送代码)、AWS EC2、DigitalOcean Droplet这类云服务器,上传代码后配置Apache/Nginx指向你的代码目录就行。
- 本地测试工具:如果只是开发测试阶段不想买服务器,可以用
ngrok把本地Web服务(比如XAMPP的80端口)映射到公网,生成临时URL供Shopify访问,适合快速调试。
二、本地文件与Shopify合作伙伴账户的集成步骤
- 部署代码到公网可访问地址
不管用服务器还是ngrok,确保你的install.php、generate_token.php等文件能通过公网URL正常访问,比如https://your-domain.com/install.php或者ngrok生成的临时地址。 - 在合作伙伴后台配置应用参数
进入你的私有应用详情页,找到应用URL和重定向URL:- 应用URL:填你的应用首页(如果有的话),或者直接填
install.php的公网地址。 - 重定向URL:必须和你
install.php里的$redirect_uri完全一致,注意这里必须是公网可访问的generate_token.php地址,比如https://your-domain.com/generate_token.php。
- 应用URL:填你的应用首页(如果有的话),或者直接填
- 触发安装授权流程
可以直接访问https://your-shop.myshopify.com/admin/apps/your-app-id(替换成你的店铺域名和应用ID),或者在店铺后台找到你的私有应用点击「安装」,触发授权流程。
三、你的代码里需要紧急修正的问题
看了你提供的代码,有几个明显错误会导致流程失败:
1. install.php里的$redirect_uri完全错误
你当前写的是:
$redirect_uri = "https://dd351ab1814cec97dcb5e8d919887c2a:abb65451f1f5c828011242c806971e2b@bahlultechstore.myshopify.com/admin/api/2020-01/orders.json/generate_token.php";
这不符合Shopify的要求,redirect_uri应该是你的generate_token.php的公网URL,比如:
$redirect_uri = "https://your-public-domain.com/generate_token.php";
而且这个地址必须和合作伙伴后台配置的重定向URL完全匹配,否则授权会失败。
2. api_call_write_products.php里的硬编码问题
$shop应该是你的实际店铺域名前缀(不带.myshopify.com),比如bahlultechstore,而不是demo-shop。$token不能硬写死,应该从generate_token.php获取到的令牌存储起来(比如存数据库或会话),再调用API时取出使用,硬编码的令牌过期或更换后会直接失效。
3. functions.php的SSL验证风险
你注释掉了SSL验证代码:
// curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 3); // curl_setopt($curl, CURLOPT_SSLVERSION, 3);
开发阶段可以暂时关闭,但生产环境必须开启SSL验证,避免安全漏洞,建议调试完成后恢复这两行代码。
四、快速测试流程建议
- 用
ngrok把本地Web服务(比如XAMPP的80端口)映射到公网,得到临时URL(比如https://abc123.ngrok.io)。 - 修改
install.php里的$redirect_uri为https://abc123.ngrok.io/generate_token.php,同时在合作伙伴后台把私有应用的重定向URL改成相同地址。 - 访问
https://abc123.ngrok.io/install.php?shop=bahlultechstore.myshopify.com,触发授权流程,看是否能成功获取访问令牌。 - 把获取到的令牌替换到
api_call_write_products.php的$token里,修改$shop为bahlultechstore,访问这个文件测试产品修改功能。
内容的提问来源于stack exchange,提问作者Bahlul Siddiquee
相关产品推荐
相关产品推荐

