Onde salvar chaves de aplicação para usar em resolvers GraphQL na FastStore v2

pessoal, alguém já criou resolvers GraphQL no Faststore v2 seguindo esta documentação? FastStore Documentation

consegui criar um resolver para recuperar informações do seller através do endpoint /api/seller-register/pvt/sellers, onde faço uso dos headers X-VTEX-API-AppKey e X-VTEX-API-AppToken com os respectivos valores de chave de aplicação.

minha dúvida é: onde eu deveria salvar esses valores de chaves??

entendo que colocando direto no código o cliente não consegue ler de maneira alguma pois o resolver fica em server-side e o repositório criado no Faststore Onboarding é privado, mas ao mesmo tempo não é uma boa prática. pensei em usar um .env local e variáveis do github, mas não encotrei uma forma de ler essas variáveis.

código do resolver, onde omito os valores de account, key e token:

export type GetSellerParams = {
  id: string;
};

export type GetSellerQueryResult = {
  getSeller: {
    id: string;
    name: string;
    logo: string;
    description: string;
  };
};

const sellerResolver = {
  Query: {
    getSeller: async (_: unknown, { id }: GetSellerParams) => {
      const url = `https://{account}.vtexcommercestable.com.br/api/seller-register/pvt/sellers/${id}?sc=1`;
      const response = await fetch(url, {
        method: "GET",
        headers: {
          Accept: "application/json",
          "Content-Type": "application/json",
          "X-VTEX-API-AppKey": "{appKey}",
          "X-VTEX-API-AppToken": "{appToken}",
        },
      });

      const data: GetSellerQueryResult["getSeller"] = await response.json();

      return data;
    },
  },
};

export default sellerResolver;
1 Like

what version are you using ?

"@faststore/core": "^3.0.22"

Oi, Tiago! Tudo bem?

O jeito correto de salvar as keys e os tokens do seu projeto em Faststore é através do vtex secrets setup.

Temos uma documentação que explica como fazer esse processo: Setting up your VTEX account to save Secrets | FastStore

Após realizar esse procedimento, os tokens salvos através dessa ferramenta ficarão encriptados para referência dentro do arquivo secrets.hidden.json, contudo serão acessáveis através do process.env.<NOME_DA_VARIAVEL>, que poderá ser declarado ao longo do projeto para que o valor desencriptado das variáveis seja acessado pelo código, mas sem ficar exposto no repositório.

Qualquer dúvida sobre o tema, só me avisar!

1 Like