Updating Avada Core V3
Avada Core package V1
Gần đây mọi người cũng đã update package @avada/core sang bản 3.3.17 để deprecate các package @avada/shopify-auth, @avada/shopify-charge, @avada/subscription và sử dụng 1 package @avada/core duy nhất.
Sau khi merge các package rồi, mình sẽ cần update @avada/core lên bản 3 để hash các accessToken để đảm bảo Protected Customer Data của Shopify tốt nhất. Xem về guide nội bộ về Protected Customer Data ở đây: https://avada-development.web.app/getting-started-shopify/#shopify-protected-data---2022-07-api-version
Avada Core V3
Bản core v3 này sẽ có update lớn ở phần hashing accessToken admin API của shop. Access Token được gen thường sẽ lưu vào field accessToken, bây giờ sẽ được
hashe và lưu vào field accessTokenHash, salt của hash này sẽ lưu vào function config. Hash này ở mỗi trường staging, local mọi đều để là shopify.access_token_key với giá trị: avada-apps-access-token nhé.
Ở trên staging để là firebase functions:config:set shopify.access_token_key="avada-apps-access-token", còn production là hash riêng.
Để đọc được sẽ cần dùng hàm import {prepareShopData} from '@avada/core'; để đọc ví dụ:
/**
* Create Shopify instance with the latest API version and auto limit enabled
*
* @param {Shop} shopData
* @param {string} apiVersion
* @return {Shopify}
*/
export function initShopify(shopData, apiVersion = API_VERSION) {
const shopParsedData = prepareShopData(shopData.id, shopData, shopifyConfig.accessTokenKey);
const {shopifyDomain, accessToken} = shopParsedData;
return new Shopify({
shopName: shopifyDomain,
accessToken,
apiVersion,
autoLimit: true
});
}
Lưu ý khi update v3
Chuẩn các hàm initShopify, hoặc những hàm gọi API qua GraphQL về nhận cả shop data
// Nên để
const shop = await getShopByField(shopifyDomain);
const shopify = initShopify(shop);
// Không nên, update qua cách trên
const {accessToken, shopifyDomain} = await getShopByField(shopifyDomain);
const shopify = initShopify({accessToken, shopifyDomain});