es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Las imágenes de la API de Twitter 1.1 no se muestran en el feed.

Tengo un comando que publica tweets, utilizando la versión 1.1 de la API de Twitter.

Ha estado funcionando, pero recientemente (no estoy seguro de cuándo), ha dejado de publicar imágenes en Twitter.

Después de una extensa depuración, no parece haber ningún error en absoluto, pero simplemente no hay imágenes en el feed.

¿Podría esto deberse a cambios con la nueva v2 de la API? ¿Se ha eliminado esta funcionalidad?

public function send($message, $media = null, $options = []) 
    {
        $mediaIds = [];
        foreach ((array) $media as $item) {
            $res = $this->request(
                'https://upload.twitter.com/1.1/media/upload.json',
                'POST',
                null,
                ['media' => $item]
            );
            $mediaIds[] = $res->media<em>id</em>string;
        }
        return $this->request(
            'statuses/update',
            'POST',
            $options + ['status' => $message, 'media_ids' => implode(',', $mediaIds) ?: null]
        );
    }

Cualquier idea será recibida con agradecimiento.

mediaIds
array(1) {
  [0]=>
  string(19) "xxxxxxxx"
}

Respuesta de la publicación de medios

object(stdClass)#1626 (5) {
  ["media<em>id"]=>
  int(xxxx)
  ["media</em>id<em>string"]=>
  string(19) "xxxxx"
  ["size"]=>
  int(129032)
  ["expires</em>after<em>secs"]=>
  int(86400)
  ["image"]=>
  object(stdClass)#1623 (3) {
    ["image</em>type"]=>
    string(9) "image/png"
    ["w"]=>
    int(400)
    ["h"]=>
    int(400)
  }
}

Elemento publicado con éxito en Twitter

object(stdClass)#1625 (23) {
  ["created<em>at"]=>
  string(30) "Thu Dec 02 11:55:42 +0000 2021"
  ["id"]=>
  int(1466375520866775045)
  ["id</em>str"]=>
  string(19) "1466375520866775045"
  ["text"]=>
  string(20) "New test message 401"
  ["truncated"]=>
  bool(false)
  ["entities"]=>
  object(stdClass)#1624 (4) {
    ["hashtags"]=>
    array(0) {
    }
    ["symbols"]=>
    array(0) {
    }
    ["user<em>mentions"]=>
    array(0) {
    }
    ["urls"]=>
    array(0) {
    }
  }
  ["source"]=>
  string(67) "<a href="https://www.co-kinetic.com" rel="nofollow">Co-Kinetic </a>"
  ["in</em>reply<em>to</em>status<em>id"]=>
  NULL
  ["in</em>reply<em>to</em>status<em>id</em>str"]=>
  NULL
  ["in<em>reply</em>to<em>user</em>id"]=>
  NULL
  ["in<em>reply</em>to<em>user</em>id<em>str"]=>
  NULL
  ["in</em>reply<em>to</em>screen<em>name"]=>
  NULL
  ["user"]=>
  object(stdClass)#1621 (43) {
    ["id"]=>
    int(68679793)
    ["id</em>str"]=>
    string(8) "68679793"
    ["name"]=>
    string(13) "glen lockhart"
    ["screen<em>name"]=>
    string(12) "glenlockhart"
    ["location"]=>
    string(14) "Sheffield, UK."
    ["description"]=>
    string(68) "Me gustan la tecnología y los burritos, y probablemente otras cosas. Principalmente burritos."
    ["url"]=>
    NULL
    ["entities"]=>
    object(stdClass)#1627 (1) {
      ["description"]=>
      object(stdClass)#1628 (1) {
        ["urls"]=>
        array(0) {
        }
      }
    }
    ["protected"]=>
    bool(false)
    ["followers</em>count"]=>
    int(55)
    ["friends<em>count"]=>
    int(163)
    ["listed</em>count"]=>
    int(2)
    ["created<em>at"]=>
    string(30) "Tue Aug 25 12:29:11 +0000 2009"
    ["favourites</em>count"]=>
    int(109)
    ["utc<em>offset"]=>
    NULL
    ["time</em>zone"]=>
    NULL
    ["geo<em>enabled"]=>
    bool(false)
    ["verified"]=>
    bool(false)
    ["statuses</em>count"]=>
    int(201)
    ["lang"]=>
    NULL
    ["contributors<em>enabled"]=>
    bool(false)
    ["is</em>translator"]=>
    bool(false)
    ["is<em>translation</em>enabled"]=>
    bool(false)
  }
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basándonos en el código y la respuesta proporcionada, parece que el problema puede no estar relacionado con la versión de la API de Twitter. El ID del medio se devuelve correctamente desde la solicitud de carga y se incluye adecuadamente en el parámetro media_ids al realizar la solicitud de actualización del tuit.

    En cambio, podría ser un problema con el medio cargado en sí mismo o el formato del medio que se está subiendo. Se recomienda verificar si el medio está en un formato admitido y si hay restricciones de tamaño o resolución que puedan estar causando el problema.

    Otra cosa a comprobar es si la cuenta de Twitter o la aplicación tienen los permisos necesarios para publicar medios en nombre del usuario. Asegúrese de que se hayan concedido los permisos apropiados y de que el usuario haya autorizado a la aplicación a acceder a su cuenta.

    En general, puede ser necesaria más información y depuración para identificar la causa exacta del problema, pero no parece estar relacionado con la nueva versión de la API de Twitter.

Comments are closed.