Shopify:获取当前使用JavaScript登录的用户ID

时间:2014-08-26 08:36:14

标签: javascript ajax shopify

我正在尝试为shopify构建一个应用程序,如果我可以使用javascript api或类似的东西获取当前记录的用户ID,我感兴趣。 我正在查看ajax api:http://docs.shopify.com/support/your-website/themes/can-i-use-ajax-api,我可以看到您可以获得当前用户已添加到购物车中的当前产品,但没有关于用户ID的信息。

是否可能,或者我遗失了什么?

7 个答案:

答案 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自动创建。也许这会帮助某人。