Comecei a fazer a integração com eles e parei justamente por que não conseguia obter o token. Tentei de tudo que foi jeito e não deu, algumas vezes conforme o content-type retorna uma string criptografada como a que o colega postou.
Então fiz um teste via php e retornou o token normalmente. O problema parece ser com o content-type 'multipart/form-data' no Harbour.
O código que o Quintas postou, está com parâmetros diferentes do que usei e também outra URL
LOCAL cUrl := "https://merchant-api.ifood.com.br/authentication/v1.0/oauth/token"
cUrl += "?grantType=client_credentials" + ;
"&clientId=" + ::cClientId + ;
"&clientSecret=" + ::cSecret + ;
"&authorizationCode=" + ;
"&authorizationCodeVerifier=" + ;
"&refreshToken="
O meu
LOCAL cUrl = 'https://pos-api.ifood.com.br/oauth/token'
cUrl += "client_id="+client_id+;
"&client_secret="+client_secret+;
"&grant_type=password"+;
"&username="+username+;
"&password="+password
Como disse com estes parametros e url consegui obter o token via php.
Não gostei deste processo, primeiro obtem o token, este tem uma validade de 1 hora, ainda tem que fazer o polling em até 30 segundos para manter a loja aberta. Isso é muito chato por que no meu caso não integro apenas com o Ifood e acaba escravisando o nosso sistema.
E outra, mexem muito na api, sempre tem campos novos e nova versão obrigando também acompanharmos antes que desativem a versão antiga da api.
Parei por enquanto a integração com eles. Vou acompanhar este tópico.