Debido al retiro de Twitter API 1.0 a partir del 11 de junio de 2013 , la secuencia de comandos a continuación ya no funciona.
// Create curl resource
$ch = curl_init();
// Set url
curl_setopt($ch, CURLOPT_URL, "http://twitter.com/statuses/user_timeline/myscreenname.json?count=10");
// Return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$output = curl_exec($ch);
// Close curl resource to free up system resources
curl_close($ch);
if ($output)
{
$tweets = json_decode($output,true);
foreach ($tweets as $tweet)
{
print_r($tweet);
}
}
¿Cómo puedo obtener el user_timeline (estados recientes) con el menor código posible?
Encontré esto: https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline pero recibo el siguiente error:
"{"errors":[{"message":"Could not authenticate you","code":32}]}"
Hay muchas clases por ahí, pero después de probar varias, ninguna parece funcionar debido a estas actualizaciones en Twitter, y algunas de ellas son clases bastante avanzadas con mucha funcionalidad que realmente no necesito.
¿Cuál es la forma más simple / más corta de obtener los estados de usuario recientes con PHP?
Respuestas:
¿Entonces quieres usar la API de Twitter v1.1?
Nota: los archivos para estos están en GitHub .
La versión 1.0 pronto quedará obsoleta y no se permitirán solicitudes no autorizadas. Entonces, aquí hay una publicación para ayudarlo a hacer eso, junto con una clase de PHP para facilitarle la vida.
Debe visitar el sitio oficial de desarrolladores de Twitter y registrarse para obtener una cuenta de desarrollador. Este es un paso gratuito y necesario para realizar solicitudes para la API v1.1.
¿Qué? ¿Pensaste que podrías hacer solicitudes no autenticadas? No con la API v1.1 de Twitter. Debe visitar http://dev.twitter.com/apps y hacer clic en el botón "Crear aplicación".
En esta página, complete los detalles que desee. Para mí, no importó, porque solo quería hacer un montón de solicitudes de bloqueo para deshacerme de los seguidores de spam. El punto es que obtendrá un conjunto de claves únicas para usar en su aplicación.
Entonces, el punto de crear una aplicación es darse un juego de llaves (y Twitter). Estos son:
Hay un poco de información aquí en lo que estas fichas para.
OAuth solicita algunos tokens. Por lo tanto, debe tenerlos generados por usted.
Haga clic en "crear mi token de acceso" en la parte inferior. Luego, una vez que se desplace hacia la parte inferior nuevamente, tendrá algunas claves recién generadas. Debe tomar las cuatro claves previamente etiquetadas de esta página para sus llamadas a la API, así que anótelas en alguna parte.
Si desea hacer un uso decente de esta API, deberá cambiar su configuración a Leer y escribir si está haciendo algo más que la recuperación de datos estándar utilizando solicitudes GET .
Elija la pestaña "Configuración" cerca de la parte superior de la página.
Dé a su aplicación acceso de lectura / escritura y presione "Actualizar" en la parte inferior.
Puede leer más sobre el modelo de permiso de aplicaciones que Twitter usa aquí.
Combiné el código anterior, con algunas modificaciones y cambios, en una clase PHP, por lo que es realmente simple hacer las solicitudes que necesita.
Esto usa OAuth y la API de Twitter v1.1 , y la clase que he creado que puedes encontrar a continuación.
Asegúrese de poner las claves que obtuvo de su aplicación en sus respectivos espacios.
A continuación, debe elegir una URL a la que desea realizar una solicitud. Twitter tiene su documentación API para ayudarlo a elegir qué URL y también el tipo de solicitud (POST o GET).
En la documentación, cada URL indica lo que puede pasarle. Si estamos usando la URL de "bloques" como la anterior, puedo pasar los siguientes parámetros POST:
Ahora que ha configurado lo que desea hacer con la API, es hora de hacer la solicitud real.
Y para una solicitud POST , eso es todo.
Para una solicitud GET , es un poco diferente. Aquí hay un ejemplo:
Ejemplo de código final : para una simple solicitud GET de una lista de mis seguidores.
¡He puesto estos archivos en GitHub con crédito a @ lackovic10 y @rivers! Espero que alguien lo encuentre útil; Sé que lo hice (lo usé para el bloqueo masivo en un bucle).
fuente
php.ini
archivo y también debe cargar los certificados de CA en suphp.ini
archivo usandocurl.cainfo = path\to\cacert.pem
. Puede obtener los certificados de CA aquí .Vaya a dev.twitter.com y cree una aplicación . Esto le proporcionará las credenciales que necesita. Aquí hay una implementación que escribí recientemente con PHP y cURL .
Esto se puede ejecutar desde la línea de comando:
fuente
screen_name
ycount
con este enfoque? Intenté agregarlo a la$url
variable pero recibí el error "No se pudo autenticar".curl_init()
. He visto algunos ejemplos y se ven muy simples y directos y exactamente como este código aquí ... ¿Necesito instalar algo especial?El código pegado por Rivers es genial. ¡Muchas gracias! Soy nuevo aquí y no puedo comentar, solo me gustaría responder a la pregunta de javiervd (¿Cómo establecerías el nombre de pantalla y contarías con este enfoque?), Ya que he perdido mucho tiempo para resolverlo fuera.
Debe agregar los parámetros tanto a la URL como al proceso de creación de la firma. Crear una firma es el artículo que me ayudó. Aquí está mi código:
fuente
buildAuthorizationHeader
función? Lo implementé por separado.Como se indicó en otras respuestas, cree una aplicación de Twitter para obtener el token, la clave y el secreto. Usando el siguiente código, puede modificar los parámetros de solicitud desde un punto y evitar errores tipográficos y errores similares (cambiar la
$request
matriz en lareturnTweet()
función).y luego solo llama
returnTweet()
fuente
functions.php
archivo en WordPress, puse<?php echo returnTweet(); ?>
un archivo HTML y genera la palabra "Array" y nada más.Gracias kris
Funcionó para mí sin usar parámetros para la consulta, cada vez que usaba más de un parámetro me mostraba el error: 32 No se pudo autenticar.
El problema para mí, estaba en la codificación de ampersand. Entonces, en su código, donde es la siguiente línea
Agregué la siguiente línea a continuación:
Y funcionó usando dos o más parámetros como screen_name y count.
Todo el código se ve así:
Espero que ayude a alguien con el mismo problema que tuve.
fuente
Esta pregunta me ayudó mucho, pero no me ayudó a comprender lo que debe suceder. Esta publicación de blog hizo un trabajo increíble al guiarme.
Aquí están los bits importantes en un solo lugar:
Simpatizo con todos los dolores de cabeza, así que aquí hay un código para resumirlo todo:
fuente
Si tiene instalada la biblioteca OAuth PHP, no tiene que preocuparse por realizar la solicitud usted mismo.
Para obtener más información, consulte los documentos o su ejemplo . Puedes usar
pecl install oauth
para obtener la biblioteca.fuente
En primer lugar, quería agradecer a Jimbo y ( su simple biblioteca post / twitter-api-php).
Si va a utilizar la API GET search / tweets con la biblioteca PHP "twitter-api-php" (TwitterAPIExchange.php):
Primero, solo tiene que comentar el área de código "Realizar una solicitud POST y repetir la respuesta".
Simplemente use el código "Realizar una solicitud GET y repetir la respuesta" y repetir la respuesta y cambiar estas dos líneas:
a
(Cambiar
screen_name
aq
, eso es todo :)fuente
Necesitará una para crear una "aplicación" en Twitter (y necesita una cuenta de Twitter para hacerlo).
Luego, debe usar OAuth para realizar una solicitud autorizada a Twitter .
Puede usar el recurso GET status / user_timeline para obtener una lista de tweets recientes.
fuente
HttpRequest()
función de PHP para el paso 2? Existe la biblioteca TwitterOAuth PHP de Abraham, github.com/abraham/twitteroauth , que también se supone que debe hacer esto, pero en realidad no se proporciona un ejemplo de cómo implementarla.Aquí hay uno breve para obtener un número específico de tweets de su línea de tiempo. Básicamente hace lo mismo que los otros ejemplos, solo que con menos código.
Simplemente complete las claves y ajústelo
$count
a su gusto:Éste usa funciones anónimas y en
file_get_contents
lugar de la biblioteca cURL. Tenga en cuenta el uso de un nonce hash MD5. Todos parecen estar de acuerdo con eltime()
nonce, sin embargo, la mayoría de los ejemplos en la web sobre OAuth usan algún tipo de cadena encriptada (como esta: http://www.sitepoint.com/understanding-oauth-1/ ). Esto también tiene más sentido para mí.Nota adicional: necesita PHP 5.3+ para las funciones anónimas (en caso de que su servidor / computadora se encuentre en una cueva de la guerra fría y no pueda actualizarla).
fuente
Desde su generador de firmas , puede generar
curl
comandos de la forma:fuente
fuente
Gracias a este hilo, y especialmente a budidino porque su código es lo que me llevó a casa. Solo quería contribuir a cómo recuperar los datos JSON de una solicitud. Realice cambios en la matriz de solicitud "// crear solicitud" del código para realizar diferentes solicitudes. En última instancia, esto generará el JSON en la pantalla del navegador
fuente
Si es útil para alguien ... En mi blog he implementado el siguiente código PHP para recuperar los últimos tweets, extraer sus datos más relevantes y luego guardarlos en una base de datos MySQL. Funciona porque lo tengo en mi blog.
La tabla de "tweets" donde los almacena:
get_tweets.php:
La función para guardar los tweets:
fuente