Meu objetivo é utilizar o ADVPL para obter o token da google cloud, para utilizá-lo em operações de upload de arquivos para o cloud storage.
Por favor, algum colega poderia me instruir de como utilizar o ADVPL para obter o token da google cloud ?
Detalhe muito importante : Toda a estrutura sistema protheus 12.25 esta no ambiente TCloud Totvs
-- Para melhor analisarem disponibilizei:
01 Imagens da configuração na ferramenta postman (*1)
02 Meu código fonte para obter o token da google cloud --
Observação : No fonte disponibilizado eu consegui validar a url, mas o token não é retornado
Para que consigam testar devem configurar o ambiente google cloud storage
(*1) imagens getnewaccesstokenpostman0.png, getnewaccesstokenpostman1.png, getnewaccesstokenpostman2.png
Muito obrigado
#include "totvs.ch"
/*
Programa principal para chamar a rotina getAcssTkn() e obter o token do google cloud storage relacionado ao
escopo https://www.googleapis.com/auth/devstorage.full_control
*/
user function thbi_csv()
//Get access token to use for file upload
accssTkn := getAcssTkn()
return nil
/**/
static function getAcssTkn()
Local aHeadOut := {}
Local oathURL := "https://accounts.google.com/o/oauth2/auth"
Local athURLPrm := ""
// Local acssTknURL := "https://accounts.google.com/o/oauth2/token"
Local stPth := ""
Local clntId := "[client_id]"
Local clntScrt := "[client_secret]"
Local rdrctURI := "[redirect_uri]"
Local scpAPIPrds := "https://www.googleapis.com/auth/devstorage.full_control"
Local cnttTp := "application/x-www-form-urlencoded" //"application/json" //"text/csv" //Content-type
Local accptdHdr := "application/json" // "*/*"
Local cnnctnHdr := "keep-alive"
Local cAutent := ""
Local cAutentErr := ""
Local ojLogin := nil
Local oRest := nil
Local jAutenticacao := nil
Local cToken := ""
ojLogin := JSonObject():New()
cBody := ojLogin:ToJson()
//Params to complete url
athURLPrm := "?client_id="+clntId+"&"
athURLPrm += "response_type=code&"
athURLPrm += "state=musa_id&"
athURLPrm += "scope="+scpAPIPrds+"&"
athURLPrm += "prompt=consent&"
athURLPrm += "include_granted_scopes=true&"
athURLPrm += "redirect_uri="+rdrctURI
aAdd(aHeadOut,"Authorization: Basic "+clntId+":"+clntScrt)
aAdd(aHeadOut,"Cache-Control: no-cache")
aAdd(aHeadOut,"Content-Type: " + cnttTp)
aAdd(aHeadOut,"Accept: " + accptdHdr)
aAdd(aHeadOut,"Connection: " + cnnctnHdr)
aAdd(aHeadOut,"User-Agent: Chrome/65.0 (compatible; Protheus " + GetBuild() + ")")
//Validate url
oRest := FWRest():New(oathURL+athURLPrm)
oRest:SetPath(stPth)
oRest:SetPostParams(cBody)
//Validate url and header
if (oRest:Post(aHeadOut))
//ConOut("Post: " + oRest:GetResult())
cAutent := oRest:GetResult()
else
//ConOut("Post: " + oRest:GetLastError())
cAutentErr := oRest:GetResult()
cAutent := oRest:GetLastError()
Alert("Post Error: " + cAutent)
endif
jAutenticacao := JSonObject():New()
jAutenticacao:FromJson(cAutent)
cToken := jAutenticacao['access_token']
return(cToken)