13
respostas

[Sugestão] Mudanças na API do twitter

Olá pessoal!

Como vocês devem saber, o twitter mudou a política de API. Com essas mudanças, as configurações descritas no curso não funcionam mais. Estou recebendo o seguinte erro:

When authenticating requests to the Twitter API v2 endpoints, you must use keys and tokens from a Twitter developer App that is attached to a Project. You can create a project via the developer portal.

Acredito que o curso precise de uma atualização nesse sentido, com novas instruç. Além disso, o limite de tweets requisitados por mês está reduzido para 1.500 - muito menor do que o anterior.

13 respostas

Oi Felipe, conseguiu resolver seu problema? Consegue mostrar o código que está gerando o erro?

Olá! Fiz como na aula, vou passar aqui em baixo:

listener:

import socket
import tweepy

HOST = 'localhost'
PORT = 9009

s = socket.socket()
s.bind((HOST, PORT))
print(f'aguardando conexão com a porta: {PORT}')

s.listen(5)
connection, address = s.accept()
print(f'recebendo solicitação de {address}')

bearer_token = 'AAAAAAAAAAAAAAAAAAAAAAdEmgEAAAAABSnCHo%2BCf%2FD8FvDfFYu1mD2Q35w%3DvOX3ZhiJApcIF2f9gwxtFs4BiUAfFzlOfr4jfArazPSBj9ekfo'
keyword = 'totk'

class GetTweets(tweepy.StreamingClient):
    def on_tweet(self, tweet):
        print(tweet.text)
        connection.send(tweet.text.encode('latin1', 'ignore'))

printer = GetTweets(bearer_token)
printer.add_rules(tweepy.StreamRule(keyword))
printer.filter()

connection.close()

client:

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName('sparkStreaming').getOrCreate()

lines = spark.readStream\
    .format('socket')\
    .option('host', 'localhost')\
    .option('port', 9009)\
    .load()

query = lines.writeStream\
    .outputMode('append')\
    .format('console')\
    .start()

query.awaitTermination()

spark.stop()

Bom dia Felipe. O código em si está correto. Testei apenas trocando seu bearer token pelo meu e consegui fazer as requests. Tente gerar um novo bearer token acessando:

dashboard --> PROJECT APP - keys and tokens --> Authentication Tokens - Bearer token - Regenerate

Tentei com uma chave nova, também tentei deletar o começar um novo projeto, mas tá dando o mesmo erro:

tweepy.errors.Forbidden: 403 Forbidden
When authenticating requests to the Twitter API v2 endpoints, you must use keys and tokens from a Twitter developer App that is attached to a Project. You can create a project via the developer portal.

Será que estou errando a configuração do app?

Qual a versão do tweepy instalada? Para saber a versão, utilize o comando " pip freeze". Ele vai lista todas as dependencias instaladas, procure por tweepy!

mais detalhes,

fiz um teste pelo terminal

cur -X GET -H "Authorization: Bearer AAAAAAAAAAAAAAAAAAAAAFB%2FmgEAAAAAM3LzcwCECsmq9yJUjoan9sALMBs%3DeyHHY1DLrpg1AwQJ0r43RWqOKSsWOR5APwGXbVjNh3NPqLqweY" "https://api.twitter.com/2/tweets/search/stream"

resposta:

{"client_id":"26902352","detail":"When authenticating requests to the Twitter API v2 endpoints, you must use keys and tokens from a Twitter developer App that is attached to a Project. You can create a project via the developer portal.","registration_url":"https://developer.twitter.com/en/docs/projects/overview","title":"Client Forbidden","required_enrollment":"Appropriate Level of API Access","reason":"client-not-enrolled","type":"https://api.twitter.com/2/problems/client-forbidden"}

vers

tweepy==4.13.0

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Precisa mudar algo dessas configs?

Quando você vai em Projects and Apps --> seleciona seu projeto --> Setting o que aparece?

isso aqui:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

estou com o mesmo problema do Felipe de Macêdo Ferreria. tem alguma solução? precisa complementar algo no código?

eu não consegui resolver... acho que eles retiraram algumas permissões mesmo das contas gratuitas

Olá Felipe, tudo bem? Obrigada pelas trocas e também por compartilhar sua dúvida conosco. Em relação a resolução, decorrente as mudanças da API estamos analisando a formação para atualizar o curso "Spark: streaming de dados". No momento, estamos estruturando um novo projeto para verificar a viabilidade de atualizar o conteúdo sem a utilização da API do Twitter.