Como utilizar a API de pesquisa do Twitter com 4D

Tradução automática de Deepl

Dado que existem cerca de 6.000 tweets por segundo(ou seja, mais de 350.000 tweets por minuto, 500 milhões de tweets por dia que equivalem aproximadamente a 200 mil milhões de tweets por ano), seria óptimo se pudéssemos procurar aqueles relacionados com um assunto específico em vez de uma avalanche de tweets que não nos interessam. Boas notícias! O Twitter fornece uma API de pesquisa REST que é óptima para pesquisar tweets.

Neste post vamos discutir como usar a API de pesquisa do Twitter com 4D (Saltar para o exemplo da base de dados).

fichas de acesso do twitter

Para utilizar a API de pesquisa do Twitter, necessita de fichas de acesso. Isto é obrigatório para enviar pedidos para a API. Para obter estes tokens, é necessário criar uma Aplicação Twitter (um passo gratuito, mas necessário ):

  1. Criar uma conta no Twitter (se ainda não tiver uma).
  2. Vá a https://dev.twitter.com/apps/new e inicie sessão.
  3. Clique no botão “Create New App”, preencha o formulário, concorde com os termos e clique no botão “Create your Twitter application”.
  4. A seguir, no separador “Keys and Access Tokens”, copie a sua “chave API” e “segredo API”.

  5. Desça e clique em “Create my access token”. Copie o seu “token de acesso” e “Access token secret”. Ao fazer isso, dá à sua conta Twitter acesso para utilizar esta API. Depois verá:

    blank

Nota: Estas fichas devem ser consideradas tão sensíveis como senhas e não devem ser partilhadas ou distribuídas a partes não confiantes.

autenticação

Agora que temos as nossas fichas, vamos sujar as nossas mãos e escrever o código de autenticação. Para isso, vamos utilizar o processo de“Autenticação apenas para aplicações“. Isto permite que uma aplicação emita pedidos autenticados para si própria, e não em nome de um utilizador específico. Este processo requer que uma aplicação o faça:

  • codificar a sua chave e segredo para o consumidor.
  • fazer um pedido ao POST oauth2 / token endpoint para trocar estas credenciais por um token portador.
  • utilizar este token portador para autenticação ao aceder à API REST.

Eis como o faz com o 4D:

  • Concatenar a chave do consumidor e o segredo codificado do consumidor numa única cadeia com um carácter de dois pontos “:”.
  • Converta a sua string em um BLOB com o TEXT TO BLOB comando.
  • Codificar a bolha com o comando BASE64 ENCODE comando.

SET BLOB SIZE(vxBlob;0)
$consumerKey :="a sua chave de consumidor aqui"
$consumerSecret :="o seu segredo de consumidor aqui"
TEXT TO BLOB ($consumerKey+": "+$consumerSecret; vxBlob; UTF8 text without length)
BASE64 ENCODE (vxBlob; $authBasicTxt)

  • O valor resultante deve ser trocado por um símbolo ao portador, emitindo um pedido de POST oauth2 / token. Este pedido é feito com o comando 4D HTTP Request e o selector HTTP POST method. Deve incluir um cabeçalho Authorization e um Content-Type, com o corpo do pedido como grant_type=client_credentials.

$authRequestContentAPPEND TO ARRAY:="grant_type=client_credentials"
ARRAY TEXT ($arrHeadAttr;0)
ARRAY TEXT ($arrHeadValue;0)
https://api ($arrHeadAttr; "Authorization")
APPEND TO ARRAY ($arrHeadAttr; "Content-Type")
APPEND TO ARRAY ($arrHeadValue; "Basic "+$authBasicTxt)
APPEND TO ARRAY ($arrHeadValue; "application/x-www-form-urlencoded;charset=UTF-8")
$url :=" .twitter.com/oauth2/token"
C_TEXT($response)

$result :=HTTP Request(HTTP POST method;$url;$authRequestContent;$response; $arrHeadAttr;$arrHeadValue;*)

  • Certifique-se de que o seu pedido HTTP é bem sucedido, verificando se o código de estado da resposta é 200. (Mais sobre os códigos de estado HTTP)
  • Analisar a resposta HTTP com o JSON Parse e depois armazenar o valor da propriedade access_token numa variável.

C_OBJECT($jsonResponse)
$jsonResponse
:=JSON Parse($response)
$accessToken :=OB Get($jsonResponse; "access_token";Is text)

  • Esta ficha portadora será utilizada para emitir um pedido à nossa API de pesquisa (detalhes na secção de pesquisa de tweets ). Por isso, copie-o e mantenha-o perto.

blank

pesquisa de tweets

A parte complicada está terminada. Agora que temos a nossa ficha de acesso, podemos usá-la para emitir um pedido de GET search/tweets.json:

$accessToken:="O seu código de acesso da secção de autenticação"
ARRAY TEXT ($searchArrHeadAttr;0)
ARRAY TEXT ($searchArrHeadValue;0)
APPEND TO ARRAY ($searchArrHeadAttr; "Autorização")
APPEND TO ARRAY ($searchArrHeadValue; "Portador "+$accessToken)

$query:="paz"
$url :="
"+$query $result :=HTTP Request(HTTP GET method;$url;$searchBody;$searchReponse;$searchArrHeadAttr;$searchArrHeadValue;*)

No depurador, arraste a sua variável $searchResponse para a janela Expressão, e notará que o resultado contém palavras-chave que correspondem à nossa consulta.

blank

Abaixo está uma resposta simplificada do JSON para a palavra-chave “paz “:

{ 
 "statuses":[ 
 { 
 "created_at": "Tue Nov 21 09:51:09 +0000 2017",
 "id":932909235528183808,
 "id_str": "932909235528183808",
 "text": "RT @AraiEij: @pintsize73 \nMaio o seu aniversário e todos os dias seja 
 cheio de amor, paz e alegria",
....
        "retweeted_status":{ 
 "created_at": "Sun Nov 19 05:48:49 +0000 2017",
 "id":932123476025946112,
 "id_str": "932123476025946112",
 "text":"@pintsize73 Feliz aniversário, querida Marie \nMaio 
 o teu aniversário e todos os dias ser cheio de amor, paz",
 "truncado":true,
 "entidades":{ 
 "hashtags":[],
 "user_mentions":[ 
 {...}
 ],
 "urls":[]
 },
 "metadata":{ 
 "iso_language_code": "en",
 "result_type": "recent"
 }
        }
     }
  ],
 "search_metadata":{ 
...
     "query": "Peace",
 "refresh_url":"?since_id=932909235528183808&q=Paz&include_entities=1",
...}
}

E aqui está uma espiada do resultado da pesquisa UI: blank

Veja mais com o nosso exemplo

Veja o nosso exemplo de aplicação! Note que este exemplo requer que siga alguns dos passos descritos . De facto, terá de obter as suas fichas de acesso ao twitter para executar a demonstração.

Exemplo: Como utilizar a API de pesquisa do Twitter

Avatar
Gerente de Marketing do Produto - Intissar entrou em 4D em 2017 como Gerente de marketing de Produto. Trabalha junto as equipes do produto, marketing, engenharia e assistência técnica para destacar o ‘por quê’, o ‘como’ e o ‘quê’ das funcionalidades novas e atualizadas a diferentes audiências. Esta proximidade lhe permite elaborar marcos de mensageria e escrever conteúdos profundos e amostras de código para o blog e o website de 4D. Depois de formar-se como engenheira em Ciências da Computação na universidade de VINCI, Intissar trabalhou em várias startups como engenheira de software. Sua experiência prática inclui a especificação, o design e o desenvolvimento de software, a formação e o apoio aos usuários e a gestão de times.