Publicando en TikTok via API

Ayer me tropecé con este video de tiktok de Carliyoelnervio, que no puede ser más divertido su canal, y en el que proponía tener una cuenta «abierta» a todo el mundo en la que cualquiera pueda subir videos (no me pueden gustar más estas chaladuras jeje)

@carliyoelnervio

Cualquier desarrollador o programador que me escriba por cualquier lado y lo hacemos para YA #somoslosdertisto #carliyoelnervio

♬ sonido original – Carlos García

Él propone un bot, o algo así, pero ¿y un formulario? un sencillo formulario donde cualquiera pueda subir un video y que dicho video se publique en una cuenta de TikTok … me gusta el proyecto 🥰

Lo primero, vamos a ver si la API de TikTok nos permite algo de esto … y parece que si, que tiene la Content Posting API ( https://developers.tiktok.com/doc/content-posting-api-get-started?enter_method=left_navigation ) que nos permite tanto publicar directamente como subir videos y dejarlos pendientes de aprobar (que sería lo recomendable), por lo que empezamos bien 👏🏻

¿API KEY?

Empieza el mambo, porque no vamos por API KEY clásica, sino que tenemos en modo Meta, tener que registrar una APP en el portal de desarrollador de TikTok

https://developers.tiktok.com/doc/getting-started-create-an-app

Lo bueno es que no hay que pagar ni nada, y el registro como desarrollador es sencillo y rápido.

Así que creamos nuestra App

Nos pedirán info pues como en casi todas las apps de este estilo que vayamos a crear en cualquier plataforma, pero algunas distintivas han sido:

  • Nos piden dominios desde donde se llamará, políticas legales y redirection url, pero hay que «validar» el dominio, por lo que vamos a tener que añadir un registro TXT en las DNS de nuestro dominio para la validación.
  • Tras añadir toda la info vamos a necesitar que TikTok nos la valide … que perezaaaaa, pero bueno, eso si, tiene un modo sandbox 🙌🏻 🙌🏻 🙌🏻
  • Otra cosilla a tener en cuenta, es añadir los scope necesarios, que en este caso son sencillos, ya que si marcamos que la app es para Content Posting API, no s pedirán tambien para Login API y todo listo, marcamos que queremos poder publicar directamente videos y todo solucionado.

Pasamos el modo Sandbox, así de momento no tenemos que esperar aprobación, y en el modo SandBox nos piden casi los mismos datos (aprobación de dominio incluida), y tenemos que añadir cuenta para las pruebas, la damos de alta y listo, ya tenemos nuestro Client Key y Client Secret para poder ponernos a programar.

Implementando la solución

La idea es:

  • Un formulario HTML al que pueda acceder cualquier usuario, subir su video, poner un título y breve descripción.
  • Dicho formulario enviará la imagen a la API de TikTok, pero para ello la API necesita un token de acceso.
  • ¿un token Antonio? pero si eso no lo tenemos!! Con el Client Key y Client Secret que teníamos de nuestra App (que van a un fichero config.php de variables), se obtiene el token, que caduca cada x tiempo, pero que es el que usaremos para la llamada de subida de contenido de la API.

Parece sencillo, así que con un /oauth.php vinculamos nuestra cuenta (en la que queremos que se publique el contenido), y eso guardará el token (esta url sólo la visitamos nosotros o Carliyoelnervio para vincular cuenta una vez o cuando el token se vaya caducando), el resto de los mortales sólo visitaría el formulario para subir el video.

Y cuando un usuario rellene el formulario, para dicha cuenta que se va el contenido 🚀

Cosillas que me he encontrado en las pruebas y quiero que te evites tener que perder el tiempo, ya lo he hecho yo por ti:

  • Si el formato del video que le subimos no es el correcto, no lo admitirá, me refiero tanto a extensión como dimensiones (si queremos que sea abierto a todo cristo, lo mismo habría que hacer un preproceso del video … ni idea ahora de cómo, pero seguro que algo hay por ahi)
  • Añadí la opción de publicar directamente y la de Enviar a bandeja. La de enviar a bandeja lo que hace es subirlo, tiktok, lo preprocesa y te manda una notificación cuando está preparado, pero no lo llega a publicar (que en el caso de que la gente meta mucha mierda y se prefiera prevalidación es la mejor opción).
    La opción de publicar directamente en una cuenta Sandbox no funciona, aunque marques la opción de que si lo permites, por lo visto la única forma de hacerlo funcionar en sandbox sería poner tu cuenta como privada, que se suba y luego ponerla como pública, entonces el video seguiría ahí … eso cuenta la leyenda, porque paso de poner mi super cuenta de 100 seguidores en privada.

Conclusión

Poder se puede, tendríamos que montarlo en un dominio del que seamos dueños (por eso de la DNS) y esperar la aprobación de TikTok, que supongo que no darán guerra, pero eso nunca se sabe.

El código

Si alguno se viene arriba y quiere tirarle, os lo dejo en un repo en github, editad el config.php con vuestros datos de acceso de la App y la redirection url y a trastearlo.

https://github.com/ablancodev/carliyo-tiktok