Laravel开发Shopify应用遇权限问题:write_price_rules需商家授权
解决Shopify API创建价格规则的权限问题
问题排查及解决方案
1. 清理无效Scope
你的Scope列表里包含了无效的products,Shopify官方Scope格式均为read_xxx或write_xxx,这个无效值会导致Scope解析异常,进而让Shopify不认可write_price_rules权限。
修改所有Scope配置,去掉products:
- 更新
.env文件中的SCOPES:SCOPES=write_price_rules,write_products,read_customers,read_price_rules,write_charges,read_products - 同步修改
AppServiceProvider.php和DBSessionStorage.php里的Scope字符串,确保三者完全一致。
2. 强制触发商家重新授权
仅删除数据库重装应用不足以更新店铺侧的权限,必须让商家重新走授权流程:
- 在Shopify后台的应用列表中卸载当前应用
- 通过Shopify CLI重启本地服务,生成新的安装链接,让商家重新安装并确认授权(此时授权页面应明确显示
write_price_rules权限)
3. 验证Access Token的实际权限
调用Shopify的/oauth/access_scopes API,确认当前使用的Access Token是否包含目标权限:
$client = new ShopifyClient($session); $scopes = $client->get('/oauth/access_scopes.json'); // 打印返回结果,检查是否存在write_price_rules dd($scopes);
如果返回列表中没有该权限,说明授权流程未正确获取新Scope,需重新检查授权环节。
4. 确认Session存储的Scope有效性
在调用价格规则API前,打印当前Session的Scope值,验证是否包含write_price_rules:
$session = ShopifySession::getCurrent(); dd($session->getScope());
若输出的Scope不包含目标权限,说明Session存储或初始化存在问题,检查DbSessionStorage的storeSession方法是否正确保存了最新Scope。
内容的提问来源于stack exchange,提问作者Leutrimi
相关产品推荐
相关产品推荐

