Quais as possíveis maneiras de autenticação de forma segura via API?

Preciso alterar a forma de comunicação da minha NewsLetter para a API, porém não posso deixar o token visível no JS. Quais as formas possíveis para fazer isso dentro da VTEX?

Olá Guilherme!
Você pode nos dar um pouco mais de contexto quanto à sua aplicação, por favor? Sua loja é implementada no VTEX IO? Como é feita essa comunicação hoje em dia?

Bruno, a loja não é implementada no Vtex IO. Antes a integração da newsletter era feita via tag: <vtex.cmc:NewsletterOptin/>, mas pelo que vi foi descontinuada. Por isso preciso trocar para API.

Bom dia, Guilhereme

A VTEX é uma plataforma incrível mas a documentação as vezes é falha, ou deixa o desenvolvedor “perdido” em alguns casos. Por isso acho que a comunidade aqui é a forma ideal dos dev’s se ajudarem.
Então vamos lá…
Pelo o que entendi sua loja é toda em CMS, e você basicamente precisa colocar a feature de cadastro de newsletter nela, certo?
Se for isso mesmo, basicamente você precisa criar uma chamada da API do MasterData v2, e como você vai fazer isso no seu ambiente de produção, não precisa fornecer a AppKey e a AppToken, essas são apenas para integrações externas, ou seja, quando sua chamada será feita por fora dos servidores VTEX, conforme você pode ler em detalhe na documentação aqui.
Outro detalhe importante que encontramos durante o desenvolvimento, é usar sempre a URL relativa e não absoluta (evitar CORS).

Um rascunho bem simples do que usamos em nossa solução:

function(reqBody) {
		return $.ajax({
			headers: {
				Accept: 'application/vnd.vtex.ds.v10+json',
				ContentType: 'application/json',
				'Content-Type': 'application/json'
			},
			data: JSON.stringify(reqBody),
			dataType: 'json',
			type: 'PATCH',
			url: `api/dataentities/NOME_DA_SUA_ENTIDADE/documents`
		});
	};
2 Likes

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.