Ir para o final dos metadados
Ir para o início dos metadados

Objetivo

Esta documentação é destinada a quem deseja realizar chamadas para a API pública por meio de eventos personalizados.

As ações disponíveis são as mesmas da API Pública (chamadas REST) e são disparadas por meio de um objeto consumer.

 

Utilizando um objeto consumer

Para obter uma instância de consumer é necessário solicitar ao objeto de ambiente oauthUtil (disponível em todos os eventos) executando o método getNewAPIConsumer ou o getNewAPIConsumerAsCurrentUser.

  • getNewAPIConsumer: utilizado para solicitar um objeto de acesso com autenticação por usuário da aplicação.
  • getNewAPIConsumerAsCurrentUser: utilizado para solicitar um objeto de acesso com autenticação pelo usuário logado.

Importante

Para utilizar esse método, é necessário marcar, na página do usuário aplicativo, a opção "Pode agir como usuário logado em eventos personalizados".

O usuário da aplicação utiliza o modo Impersonate como forma de identificação na autenticação do acesso. Esse modo Impersonate só é permitido por meio dos eventos personalizados e não fora dele.

 

Para ambos os métodos descritos acima, utilizar os seguintes parâmetros:

 

  • Consumer Key;
  • Consumer Secret;
  • Token Access;
  • Token Secret.

Essas informações de parâmetros são fornecidas pelo Fluig em Painel de Controle, na aba WCM, item Oauth Provider.

 

O método get

Esse método realiza uma chamada GET na API pública, passando como argumento uma URI válida da API (ver documentação da API).

Ex.: consumer.get("/public/social/community/comunidade1");

 

O método post

Esse método realiza uma chamada POST na API pública, passando como argumento uma URI válida da API (ver documentação da API) e os dados enviados em formato JSON.

Ex.: consumer.post("/public/social/post/create/with/upload", "{\"text\":\"Post criado via evento\",\"visibility\":\"PUBLIC\"}");

 

Exemplo com usuário de aplicação

Nesse exemplo, a mensagem "Post criado via evento" é publicada no mural.

function beforeSocialPost(companyId, vo) {
    if (vo.getSocial().getType() == "USER" && vo.getUser() != "admin") {
        var consumer = oauthUtil.getNewAPIConsumer("my_app_key", "my_app_secret",
                        "605da7f2-d087-4f4b-903e-486df9563956",
                        "2b192950-fe0c-4211-a4bf-5962c18432d85c077dfb-aa51-45a0-ab43-822a680070ab");
        var userData = JSON.parse(consumer.get("/public/social/user/" + vo.getUser()));
        if (userData.numberFollowers == 0) {
            throw "Voce deve ser seguido por alguem para poder postar em sua timeline.";
        }
    }
}

 

Exemplo com usuário autenticado

function afterDocumentPublisher(){
    var doc = getValue("WKDocument");
    var user = getValue("WKUser");

    var msgPost = "Novo documento: "+ doc.getDocumentId() + " - Versão: "+ doc.getVersion();
    log.info(msgPost);

    var jsonContent = "{\"text\":\"" + msgPost + "\",\"visibility\":\"PUBLIC\"}";
    log.info(jsonContent);

    var consumer = oauthUtil.getNewAPIConsumerAsCurrentUser("myapp", "myappsecret", "32718929-568b-4a64-9f67-bbeadf4c1fc3",
            "eff7b746-384b-43ba-be3a-aed14da822a4b8352de0-62be-456e-a0d8-ab5c00a745bc");
    consumer.post("/public/social/post/create", jsonContent);
}

Atenção

O método getNewAPIConsumerAsCurrentUser não é suportado pelos seguintes recursos e eventos: