No meu caso a solução foi a seguinte:
/*/{Protheus.doc} new
Metodo construtor da classe
@author user
@since 26/03/2020
@version version
@param param_name, param_type, param_descr
@return return_var, return_type, return_description
/*/
Method new() class clsToken
Self:oObjREST
Self:aHeadStr := { }
Self:c_ClientId := ""
Self:c_CliSecret := ""
emphasized textSelf:cUrl := "https://oauth.hm.bb.com.br"
Self:cJson := "grant_type=client_credentials&client_id="+Self:c_ClientId+"&client_secret="+Self:c_CliSecret+"&scope=cobranca.registro-boletos"
Self:cMetodo := "/oauth/token"
Self:cRetAPI := Nil
Self:oRetJSON := Nil
Self:cStatusRet := ''
Return()
/*/{Protheus.doc} mtdGetToken
Metodo que solicita o token ao WS em REST do BB
@author user
@since 26/03/2020
@version version
@param param_name, param_type, param_descr
@return return_var, return_type, return_description
/*/
Method mtdGetToken( c_Fil, l_Job ) class clsToken
Local l_Ret := .F.
Local c_AuxF := cFilAnt
Default l_Job := .F.
Self:c_ClientId := "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Self:c_CliSecret := "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
// Monta os dados do header da request
aAdd( Self:aHeadStr, 'Content-Type: application/x-www-form-urlencoded')
aAdd( Self:aHeadStr, 'Authorization: Basic ' + Encode64( ( Self:c_ClientId + ':' + Self:c_CliSecret ) ) )
aAdd( Self:aHeadStr, 'Cache-Control: no-cache')
// Realiza o request
oObjREST := FWRest():New( Self:cUrl )
oObjREST:setPath( Self:cMetodo)
oObjREST:setPostParams( Self:cJson )
If oObjREST:Post( Self:aHeadStr )
Self:cRetAPI := oObjREST:GetResult()
Self:cStatusRet := oObjREST:oResponseH:cStatusCode
Else
Self:cRetAPI := oObjREST:GetLastError()
Self:cStatusRet := oObjREST:oResponseH:cStatusCode
EndIf
If( Alltrim( Self:cStatusRet ) = '200') //Ok
//MsgInfo( Self:cRetAPI, "Erro" )
// Deserealiza uma string no formato JSON
FWJSonDeserialize( Self:cRetAPI, @Self:oRetJSON )
Self:c_Token := Self:oRetJSON:ACCESS_TOKEN
l_Ret := .T.
Else
If( l_Job )
conout("RegBBAut :: " + Dtoc(Ddatabase) + " - " + Time() + 'Falha ao conectar: mtdGetToken' )
Else
MsgAlert( Self:cRetAPI, "Falha ao conectar: mtdGetToken" )
EndIf
Self:c_Token:= ""
EndIf
Return( l_Ret )
Adriano, Você conseguiu fazer a requisição neste webservice? Caso tenha feito poderia compartilhar como ficou a requisição?
— Pedro Vilas Boas 04 de Aug de 2020Pedro, conseguir sim. Vou compartilha como solução para a o meu Post.
— Adriano Moreira 04 de Aug de 2020