簡體   English   中英

Shopify:在 JavaScript 中獲取當前登錄的用戶 ID

[英]Shopify: get current logged in user ID in JavaScript

我正在嘗試為 shopify 構建一個應用程序,如果我可以使用 javascript api 或類似的東西獲取當前登錄的用戶 ID,我很感興趣。 我正在查看 ajax api: http : //docs.shopify.com/support/your-website/themes/can-i-use-ajax-api ,我可以看到您可以獲得當前用戶擁有的當前產品添加到他的購物車,但沒有關於用戶 ID。

有可能嗎,還是我錯過了什么?

您可以在 JavaScript 中嘗試使用__st.cid來獲取客戶 ID。

我發現__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% 的時間來修復我的產品,因為它們。

layout.liquid文件中,您可以添加此代碼來定義全局customerId變量

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

只需從ShopifyAnalytics.meta.page.customerId獲取它是您的腳本

最好的辦法是創建一個應用程序,在商店中安裝一個簡單的 ScriptTag。 然后,該腳本可以安全地將客戶 ID 報告回應用程序。 做到這一點非常簡單。 忘記前端 API,因為沒有使用它來調用您的應用程序的安全方法。

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

此解決方案不是 100% 獲取user_id ,而是檢測當前用戶是否以管理員身份登錄。 您可以使用typeof Shopify.AdminBar來檢查管理欄是否存在。 如果當前用戶是管理員,它會由 Shopify 自動創建。 也許這會幫助某人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM