2016-11-02 61 views
2

試圖神交這個電子商務的場景......安培形式的會話後臺和第三方的cookies

  1. 我放建立一個放大器產品頁面具有新的放大器形式
  2. 的add到購物車按鈕是一個XHR給我的後端(即基於會話,使用 餅乾默認)
  3. 和用戶搜索的產品結果馴服他們 到我的功放產品頁面,但他們從來沒有到我的網站
  4. 他們提交添加到購物車窗體
  5. 的CORS預檢使得它的方式到我的後端,和我設置所有適當允許按照https://github.com/ampproject/amphtml/blob/master/spec/amp-cors-requests.md
  6. 現在實際提出要求......後臺初始化會話, 返回會話標識符作爲一個cookie,但由於用戶永遠不會去 我的網站...只是谷歌放大器緩存它被視爲第三方 Cookie和瀏覽器丟棄它(導致用戶禁用第三方cookie)
  7. 用戶會話丟失,因爲他們添加到購物車操作

所以問題是,我如何保持會議周圍和購物車中的物品? 我錯過了什麼?有沒有我沒有看到的詭計?

感謝任何見解。

回答

1

我也知道關於AMP頁面的非常有限的信息,但是我建議您通讀User identification並嘗試使用AMP生成的client ID。如文檔中所述:

默認情況下,AMP將管理提供的客戶端ID,無論該頁面是從發佈者的原始網站還是通過緩存訪問。

同樣,在Variables supported in AMP analytics中瞭解更多關於客戶端ID替換的信息,包括如何添加可選的用戶通知ID。

希望有幫助!

3

將購物車與CLIENT_ID關聯將是解決此問題的最佳方法。不幸的是,AMP中尚不支持通過表單傳輸CLIENT_ID。目前正在執行中,您可以通過issue查看當前狀態。

下面是一個現在可以工作的方法:這個方法是將購物車內容編碼成表單結果中返回的字符串。這樣我們就可以生成包含購物車內容的「查看購物車」和「結帳」鏈接。一旦用戶點擊其中一個鏈接,您可以在後端創建實際的購物車,並將用戶標識存儲在cookie中。

例如:

<form action-xhr="/add-to-cart" method="POST"> 
    <input type="hidden" name="itemId" value="headphones-123"> 
    <!-- Hide after form submit success --> 
    <input type="submit" name="add" value="Add to Cart"> 

    <div submit-success> 
    <template type="amp-mustache"> 
     <!-- shopping cart contents, e.g headphones-123 --> 
     {#shoppingCartContent} 
     <a href="/cart/view/{{shoppingCartContent}}">View In Cart</a> 
     <a href="/cart/checkout/{{shoppingCartContent}}">Checkout</a> 
     {/shoppingCartContent} 
    </template> 
    </div> 
    <div submit-error> 
    <template type="amp-mustache"> 
     {{message}} <!-- e.g. Only 2 Headphones are left. --> 
    </template> 
    </div> 
</form> 

這種方法的缺點是用戶離開頁面時,先查看了購物車,購物車會丟失。一旦CLIENT_ID可以通過放大器形式傳遞,這將被解決。

+0

client_id如何解決它們從緩存頁面添加放大器的情況...然後進入我的頁面之外的功放...我不會有功放客戶端ID,對不對?或者我用功放client_id得到一個cookie? –

+0

IE確定我可以將購物車與client_id關聯...但是當用戶訪問放大器之外的網站時...我如何知道他們的client_id? –