我正在尝试为shopify构建一个应用程序,如果我可以使用javascript api或类似的东西获取当前记录的用户ID,我感兴趣。 我正在查看ajax api:http://docs.shopify.com/support/your-website/themes/can-i-use-ajax-api,我可以看到您可以获得当前用户已添加到购物车中的当前产品,但没有关于用户ID的信息。
是否可能,或者我遗失了什么?
答案 0 :(得分:10)
我发现__st
个变量不可靠(__st_uniqToken
为一个)。
我相信在Javascript中执行此操作的正确方法是使用以下调用:
ShopifyAnalytics.lib.user().id()
您还可以使用以下内容获取唯一用户ID(未登录ID)
ShopifyAnalytics.lib.user().properties().uniqToken
这也是在结帐页面上获取它的唯一可靠方式。我之前使用的是__st_uniqToken
,但它已停止工作。
注意这不再是100%万无一失。 Shopify已经重新更改了网站在着陆和感谢页面上的工作方式。 我必须使用以下功能来可靠地获取用户ID。
var user_id = function() {
try {
return ShopifyAnalytics.lib.user().id();
} catch(e) {}
try {
return ShopifyAnalytics.lib.user().properties().uniqToken;
} catch(e) {}
try {
return ShopifyAnalytics.lib.user().anonymousId();
} catch(e) {}
return __st_uniqToken;
};
为Shopify开发是一场真正的噩梦。我花了50%的时间每隔几周不打破我的产品,因为它们。
答案 1 :(得分:7)
您可以在JavaScript中尝试使用__st.cid
来获取客户ID。
答案 2 :(得分:6)
从ShopifyAnalytics.meta.page.customerId
获取它是您的脚本
答案 3 :(得分:3)
在 layout.liquid 文件中,您可以添加此代码以定义全局 customerId 变量
{% if customer %}
<script type="text/javascript">
window.customerId = "{{ customer.id }}";
</script>
{% endif %}
答案 4 :(得分:2)
您最好的选择是创建一个在商店中安装简单ScriptTag的应用程序。然后,该脚本可以安全地将客户ID报告给应用程序。这很简单。忘记前端API,因为没有安全的方法来使用它调用您的应用程序。
答案 5 :(得分:2)
似乎Shopify API再次更改,我看到现在用户ID在ShopifyAnalytics.lib.user().traits().uniqToken
中。另外,加载此值可能需要一些时间。
一旦值可用,我就会使用此代码段执行作业。
<script type="text/javascript">
actOnUser = function(retry, func){
if (ShopifyAnalytics && ShopifyAnalytics.lib && ShopifyAnalytics.lib.user) {
console.log(ShopifyAnalytics.lib.user().traits().uniqToken); // Do your work here.
} else {
if (retry > 0) {
setTimeout(function() {
func(retry - 1, func);
}, 1000);
}
console.log('User not ready'); // Can be removed - just for debug
}
}
console.log('Starting');
setTimeout(function() {
actOnUser(10, actOnUser);
}, 1000);
</script>
答案 6 :(得分:0)
此解决方案不是100%地获得user_id
,而是关于检测当前用户是否以admin身份登录。您可以使用typeof Shopify.AdminBar
检查管理栏是否存在。如果当前用户是admin,它将由Shopify自动创建。也许这会帮助某人。