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

     2023-02-15     241

关键词:

【中文标题】Shopify:在 JavaScript 中获取当前登录的用户 ID【英文标题】:Shopify: get current logged in user ID in JavaScript 【发布时间】:2014-10-19 12:25:02 【问题描述】:

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

有可能吗,还是我错过了什么?

【问题讨论】:

【参考方案1】:

我发现__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% 的时间来修复我的产品。

【讨论】:

这应该是公认的答案,因为它实际上回答了“获取当前登录用户 ID”的问题。 自此答案以来,ShopifyAnalytics.lib.user() 对象似乎发生了变化。我现在只看到 traits 函数,具有属性 uniqToken,即 ShopifyAnalytics.lib.user.traits().uniqToken @AndyTriggs 现在是ShopifyAnalytics.lib.user().traits().uniqToken【参考方案2】:

您可以尝试在 JavaScript 中使用 __st.cid 来获取客户 ID。

【讨论】:

这对我有用。如果用户未登录,则未定义。【参考方案3】:

layout.liquid 文件中,您可以添加此代码来定义全局 customerId 变量

% if customer %
  <script type="text/javascript">
   window.customerId = " customer.id ";   
  </script>
% endif %

【讨论】:

只有在 .liquid 文件中使用它才会起作用。它不适用于 .js 文件。 这是在 .liquid 文件中声明 GLOBAL 变量的方法,该文件可从任何 js 文件访问。 这个解决方案对于私有应用程序来说可能没问题,但期望商家编辑流动模板以允许在前端访问公共应用程序的客户 ID 充其量是 hacky。蒂姆,没有什么对你不利,只是对这个答案感到沮丧,因为 Shopify 工作人员也推荐这种完全反商店友好和反良好体验的方法。 当然,我对它的这个变体并不满意,但正如你所说的其他变体,甚至官方如果真的很难确定更好。因此,声明更可靠的东西会更好。但是,是的,我在自己的主题中为自己的功能做了它。【参考方案4】:

ShopifyAnalytics.meta.page.customerId 得到它是你的脚本

【讨论】:

或者更具体地说 var customer_id = meta.page.customerId; ShopifyAnalytics.meta.page 对象不再包含customerId【参考方案5】:

您最好的选择是创建一个在商店中安装简单 ScriptTag 的应用程序。然后,该脚本可以将客户 ID 安全地报告回应用程序。这样做很简单。忘记前端 API,因为没有安全的方式来使用它来调用您的应用程序。

【讨论】:

听起来很有趣。但是如何使用脚本获取客户 ID?这就是我要找的 使用液体。 var id = customer.id; // 现在用 id 回调我的安全应用代理 脚本标签不能使用 Liquid。我不能在 Shopify 文档中引用,尽管他们不能这样做是有道理的。关于nozzlegear.com/blog/the-developers-guide-to-shopify-script-tags的一些有用信息【参考方案6】:

Shopify API 好像又变了,我看到现在用户 ID 在ShopifyAnalytics.lib.user().traits().uniqToken。此外,加载此值可能需要一些时间。

一旦值可用,我使用此代码 sn-p 执行工作。

<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>

【讨论】:

【参考方案7】:

这个解决方案不是 100% 获取user_id,而是检测当前用户是否以管理员身份登录。您可以使用typeof Shopify.AdminBar 检查管理栏是否存在。如果当前用户是管理员,它将由 Shopify 自动创建。也许这会对某人有所帮助。

【讨论】:

使用 Shopify API 获取当前产品 ID 以进行 Javascript API 调用

】使用ShopifyAPI获取当前产品ID以进行JavascriptAPI调用【英文标题】:GettingcurrentProductIDwithShopifyAPIforaJavascriptAPIcall【发布时间】:2012-08-2010:29:54【问题描述】:我正在开发一个Shopify应用程序,该应用程序使用适用于Shopify的DaisyAPI动... 查看详情

从shopify发送获取请求

我想从我的Shopify商店向付款处理器付款页面(bluesnap)发送一个get请求。我想当有人点击购物车页面中的结帐按钮重定向到我的Bluesnap付款页面时,但我也希望将订单总数发送到Bluesnap付款页面。我该怎么办呢?谢谢。答案这不... 查看详情

Shopify 在 url 中启用折扣代码(每页) - 无重定向

...描述】:在SHOPIFYSTORE:如何在URL中添加折扣代码而不使用javascript重定向。在带有折扣代码的url中有一个参数。【问题讨论】:【参考方案1】:您网站中每个带有参数discout的url都会 查看详情

在 Shopify 中添加自定义多图像部分

】在Shopify中添加自定义多图像部分【英文标题】:Addcustommulti-imagesectioninShopify【发布时间】:2019-12-1309:29:51【问题描述】:我正在尝试在Shopify中添加一个自定义部分,以允许用户上传2张宣传图片。我是新手,但我设法为1张图... 查看详情

如何从 Shopify SDK 中获取收藏?

】如何从ShopifySDK中获取收藏?【英文标题】:HowtogetcollectionfromShopifySDK?【发布时间】:2016-10-1605:27:13【问题描述】:我与ShopifySDK合作。我成功集成了它,但问题是当我尝试从shopify获取收藏时,我的应用程序崩溃了?我已经关注... 查看详情

一键获取产品的 shopify Metafields

】一键获取产品的shopifyMetafields【英文标题】:GetshopifyMetafieldsforproductsinonecall【发布时间】:2012-06-1616:46:39【问题描述】:我一直在尝试为100多种产品获取元字段,这意味着我必须为每种产品分别进行100次API调用。如果有一种方... 查看详情

Shopify - 通过多个变体 ID 检索多个变体详细信息

】Shopify-通过多个变体ID检索多个变体详细信息【英文标题】:Shopify-Retrievesmultiplevariantdetailbymultiplevariantid【发布时间】:2019-05-0309:02:37【问题描述】:有没有办法在单个shopify调用中使用多个变体ID获取多个变体详细信息。实际... 查看详情

在我的 Shopify Liquid 主题中添加并解析我自己的 JSON 对象

...件夹中添加了一个JSON文件。我想从我的资产文件夹中的javascript文件中以jquery方法获取和解析这个JSON对象。我尝试将json文件作为ass 查看详情

如何在shopify中覆盖主题

】如何在shopify中覆盖主题【英文标题】:Howtooverwritethethemeinshopify【发布时间】:2020-06-1108:26:06【问题描述】:任何人都可以帮助我如何覆盖Shopify中的主题。是否有任何选项可以在主主题下创建自定义子主题并将自定义代码写入... 查看详情

使用 Firebase 进行 Shopify 身份验证验证?

】使用Firebase进行Shopify身份验证验证?【英文标题】:ShopifyAuthenticationValidationwithFirebase?【发布时间】:2020-10-0920:32:56【问题描述】:我一直在关注this教程,了解如何使用Node、Nextjs和React构建公共Shopify应用程序。一切进展顺利... 查看详情

如何在 shopify 产品页面上添加自定义文本框字段

】如何在shopify产品页面上添加自定义文本框字段【英文标题】:Howtoaddcustomtextboxfieldonshopifyproductpage【发布时间】:2021-03-2519:43:00【问题描述】:我需要在shopify产品页面上添加自定义文本框字段。我的要求是在产品页面上添加文... 查看详情

Shopify 在 Scala 中验证 webhook 调用

】Shopify在Scala中验证webhook调用【英文标题】:ShopifyverifywebhookcallinScala【发布时间】:2013-08-2502:40:30【问题描述】:我正在为Shopifywebhook实现一个简单的web服务,以便使用Play2进行调用。我想使用包含的“X-Shopify-Hmac-Sha256”标头参... 查看详情

如何在 shopify 模板中迭代产品

】如何在shopify模板中迭代产品【英文标题】:Howtoiterateproductsinashopifytemplate【发布时间】:2020-11-1903:33:40【问题描述】:我是Shopify的新手。我需要为商店创建一个自定义主题,并且正在练习循环。但我对基本产品迭代有疑问。in... 查看详情

如何在shopify中显示特定标签的产品?

】如何在shopify中显示特定标签的产品?【英文标题】:Howtodisplayproductsfromspecifictaginshopify?【发布时间】:2021-10-0812:43:22【问题描述】:如何在shopify自定义模板中显示特定标签“有机”的产品?这是我的代码。%ifcustomer.tagscontains\... 查看详情

在 Visual Studio 代码中格式化液体(Shopify)代码

】在VisualStudio代码中格式化液体(Shopify)代码【英文标题】:Formatliquid(Shopify)codeinvisualstudiocode【发布时间】:2018-10-2707:18:10【问题描述】:如何在VisualStudio中格式化.liquid(Shopify液体)代码。通过将语言设置为HTML,我可以做到... 查看详情

如何在javascript中获取django模板的variable的值?

】如何在javascript中获取django模板的variable的值?【英文标题】:Howtogetthevalueofavariableofdjangotemplateinjavascript?如何在javascript中获取django模板的variable的值?【发布时间】:2020-11-1207:17:45【问题描述】:我现在从views.py获取img的值,... 查看详情

在nestjs中添加对shopify的webhook验证

怎么添加对Shopify的WebHook验证背景介绍Shopify是一家一站式SaaS模式的电商服务平台,总部位于加拿大首都渥太华,专注于为跨境电商用户提供海外品牌建立及销售渠道管理。为电商卖家提供搭建网店的技术和模版,管理全渠道的... 查看详情

如何从 Shopify Python API 获取所有产品 ID

】如何从ShopifyPythonAPI获取所有产品ID【英文标题】:HowtogetallproductidfromShopifyPythonAPI【发布时间】:2017-09-2009:37:49【问题描述】:我创建了一个私人shopify应用程序。它可以获取几乎所有带有产品ID的信息。但是我需要一个选项来... 查看详情