“Conocimiento software>Facebook

¿Cómo se guarda los comentarios de Facebook en una base de datos MySQL?

2013/3/8
Guardar comentarios de Facebook a una base de datos MySQL implica varios pasos, que incluyen:

1. Comprender la API del gráfico de Facebook:

* Acceso a datos: La API del gráfico de Facebook es la forma principal de Facebook para que los desarrolladores interactúen con sus datos. Deberá usarlo para recuperar comentarios de las publicaciones de Facebook.

* Configuración de la aplicación: Debe crear una aplicación de Facebook a través de la plataforma Facebook for Developers ([https://developers.facebook.com/font>(https://developers.facebook.com/)).

* Permisos: Su aplicación necesita los permisos apropiados para acceder a los comentarios. El `read_stream` (en desuso, pero aún podría ser necesario para las API más antiguas) o` public_profile` combinadas con características que requieren una revisión como `pages_read_engagement` y potencialmente` páginas_manage_posts` son cruciales dependiendo de las publicaciones/comentarios a las que se dirige. Revise cuidadosamente las pautas de permiso de Facebook. El acceso a los datos del usuario está cada vez más restringido.

* Tokens de acceso: Obtendrá un token de acceso después de que su aplicación esté autorizada. Este token actúa como su clave para acceder a la API de gráficos. Existen diferentes tipos de tokens (usuario, aplicación, página). Los tokens de usuario son para acciones en nombre de un usuario. Los tokens de aplicaciones son para acciones relacionadas con la aplicación en sí. Los tokens de página son para administrar una página de Facebook. Elija el apropiado para su caso de uso.

2. Configuración de su base de datos MySQL:

* Crear una base de datos: Cree una base de datos en su servidor MySQL para almacenar los comentarios (por ejemplo, `Facebook_comments`).

* Crear una tabla: Cree una tabla para contener los datos de comentarios. Aquí hay una estructura de ejemplo:

`` `SQL

Crear comentarios de la tabla (

Comment_id Varchar (255) Clave principal, - La identificación única de Facebook para el comentario

Post_id Varchar (255), - La identificación única de Facebook para la publicación

User_id Varchar (255), - La identificación única de Facebook para el comentarista

user_name varchar (255), - nombre del comentarista

Texto del mensaje, - el texto del comentario

creado_time dateTime, - marca de tiempo de cuándo se creó el comentario

me gusta int predeterminado 0, - número de me gusta (si estás almacenando esto)

Respuestas int predeterminadas 0, - número de respuestas (si está almacenando esto)

Publicaciones de referencias de la clave extranjera (post_id) (Post_id) en Delete Cascade, - Opcional:Enlace a una tabla 'Publicaciones'

Referencias de la tecla exterior (user_id) Usuarios de referencias (user_id) en Eliminar el set null - opcional:enlace a una tabla de 'usuarios'

);

Crear publicaciones de mesa (

Post_id Varchar (255) Clave principal, - La identificación única de Facebook para la publicación

Texto del mensaje, - el texto de la publicación

creado_time dateTime, - marca de tiempo de cuándo se creó la publicación

... Otros datos post ...

);

Crear usuarios de tabla (

User_id Varchar (255) Clave principal, - La ID única de Facebook para el usuario

user_name varchar (255), - el nombre del usuario

... Otros datos de usuario ...

);

`` `` ``

* Tipos de datos: `Varchar (255)` es adecuado para la mayoría de los ID y nombres. El `Text` es para contenido de comentarios más largo. `DateTime` almacena las marcas de tiempo.

* Clave primaria: `comment_id` debería ser la clave principal, ya que es el identificador único para cada comentario. Del mismo modo, `post_id` y` user_id` son claves principales en sus respectivas tablas.

* claves extranjeras (opcional pero recomendado): Use claves extranjeras para vincular la tabla 'Comentarios' a otras tablas como `publicaciones 'y` usuarios`. Esto ayuda a mantener la integridad de los datos y facilita la consulta. `En Delete Cascade` significa que si elimina una publicación, todos sus comentarios asociados también se eliminarán. `En Delete SET NULL` significa si se elimina un usuario, el` user_id` en la tabla 'Comentarios' se establecerá en NULL.

* índices: Considere agregar índices a columnas consultadas con frecuencia (por ejemplo, `post_id`,` user_id`, `creat_time`) para mejorar el rendimiento de la consulta.

3. Escribir el código (ejemplo usando Python):

`` `Python

Importar Facebook

importar mysql.connector

importar json

Credenciales de la API de Facebook

Facebook_app_id ="your_app_id"

Facebook_app_secret ="your_app_secret"

Access_token ="your_access_token" # mejor usar un token de larga vida

credenciales de base de datos MySQL

Mysql_host ="localhost"

Mysql_user ="your_mysql_user"

Mysql_password ="your_mysql_password"

Mysql_database ="facebook_comments"

Def Connect_to_mysql ()::

intentar:

mydb =mysql.connector.connect (

host =mysql_host,

usuario =mysql_user,

contraseña =mysql_password,

base de datos =mysql_database

)

regresar mydb

excepto mysql.connector.error como err:

print (f "Error conectándose a mysql:{err}")

no devuelve ninguno

Def get_facebook_comments (post_id):

"" "Recupera comentarios de una publicación de Facebook usando la API de gráficos". ""

intentar:

Graph =Facebook.Graphapi (access_token =access_token, versión ="v19.0") # Especificar la versión API

Comentarios =Graph.get_connections (id =post_id, conexión_name ='Comentarios', Fields ='id, Message, Create_Time, desde {id, name}, me gusta_count') # Especificar campos para recuperar

all_comments =[] # Lista para almacenar todos los comentarios de todas las páginas

Mientras que es cierto:

intentar:

all_comments.extend (comentarios ['data']) # Agregar comentarios de la página actual

# Intenta hacer una solicitud a la página siguiente de datos, si existe.

Comentarios =Graph.get_page (Comentarios ['Paging'] ['Next'])

Excepto KeyError:

# Cuando no hay más páginas (['Paging'] ['Next'] no existe), rompa desde el bucle.

romper

Devolver todos_comments

excepto Facebook.Graphapierror como E:

print (f "Error al obtener comentarios para post {post_id}:{e}")

no devuelve ninguno

Def insert_comment_into_db (mydb, comentario):

"" "Inserta un comentario en la base de datos MySQL." ""

intentar:

Mycursor =mydb.cursor ()

sql ="" "

Insertar en comentarios (comment_id, post_id, user_id, user_name, mensaje, creating_time, me gusta)

Valores ( %s, %s, %s, %s, %s, %s, %s)

"" "

valores =(

Comentario ['id'],

Comentario ['post_id'], # suponiendo que haya agregado el post_id al diccionario de comentarios

comentario ['de'] ['id'],

comentario ['de'] ['nombre'],

Comentario ['Mensaje'],

Comentario ['creating_time'],

comentario.get ('me gusta_count', 0) # use .get () para manejar la falta de 'me gusta_count'

)

mycursor.execute (SQL, valores)

mydb.commit ()

print (f "Comentario insertado:{comentario ['id']}")

excepto mysql.connector.error como err:

print (f "Error insertar comentario {comentario ['id']}:{err}")

MyDB.Rollback () # Rollback en caso de error

Def Main ()::

"" "Función principal para recuperar comentarios y almacenarlos en la base de datos". ""

mydb =conection_to_mysql ()

si no mydb:

devolver

post_ids =["post_id_1", "post_id_2", "post_id_3"] # reemplazar con ID de publicación reales

para post_id en post_ids:

comentarios =get_facebook_comments (post_id)

Si los comentarios:

Para comentarios en los comentarios:

Comentario ['post_id'] =post_id # Agregar el post_id al diccionario de comentarios

insert_comment_into_db (mydb, comentario)

mydb.close ()

Si __name__ =="__main__":

principal()

`` `` ``

Explicación del código:

* Dependencias:

* `Facebook-SDK`:instalar con` Pip install Facebook-SDK`

* `MySQL-Connector-Python`:instalar con` Pip install MySQL-Connector-Python`

* Credenciales: Reemplace `Your_App_id`,` Your_app_Secret`, `Your_Access_Token`,` Your_Mysql_user`, `Your_Mysql_Password`,` Facebook_comments` y los marcadores de lugar `post_id` con sus credenciales reales e identificaciones de publicaciones.

* `Connect_to_mysql ()`: Establece una conexión con su base de datos MySQL. Maneja posibles errores de conexión.

* `get_facebook_comments (post_id)`:

* Se conecta a la API del gráfico de Facebook usando su token de acceso.

* Usa `gráfico.get_connections ()` para obtener comentarios para un `post_id` dado. El `Connect_Name ='Comentarios' 'le dice a la API que recupere los comentarios. El parámetro `Fields` especifica qué campos recuperar de cada comentario (reduzca la transferencia de datos innecesarios).

* Maneja la paginación. La API del gráfico de Facebook devuelve datos en las páginas. El código itera a través de todas las páginas de comentarios utilizando la información de 'Paging'. Esto es crucial para publicaciones con muchos comentarios.

* Manejo de errores usando `intente ... excepto Facebook.Graphapierror`.

* `insert_comment_into_db (mydb, comment)`:

* Prepara una declaración SQL `insert` con marcadores de posición (`%S`). Esta es la mejor manera de prevenir las vulnerabilidades de inyección de SQL.

* Crea una tupla `valores` que contiene los datos a insertar.

* Ejecuta la instrucción SQL usando `mycursor.execute (sql, valores)`.

* Comprende los cambios a la base de datos usando `mydb.commit ()`.

* Maneja los posibles errores de MySQL usando `intente ... excepto mysql.connector.error` y vuelve a revertir la transacción usando` mydb.rollback () `si ocurre un error.

* `main ()`:

* Se conecta a la base de datos.

* Itera a través de una lista de `post_ids`.

* Llama a `get_facebook_comments ()` para recuperar comentarios para cada publicación.

* Itera a través de los comentarios recuperados y las llamadas `insert_comment_into_db ()` para guardarlos en la base de datos.

* Cierra la conexión de la base de datos.

* `if __name__ ==" __main __ ":`: Esto asegura que la función `main ()` solo se ejecute cuando el script se ejecuta directamente (no cuando se importa como un módulo).

Consideraciones importantes:

* Tokens de acceso:

* Tokens de usuario: Bueno para las acciones en nombre de un usuario. Ellos expiran. Puede extenderlos pero aún necesita una reautorización.

* Tokens de página: Necesitaba administrar una página de Facebook. Obtiene esto a través de un token de usuario con el permiso 'manage_pages`. Luego puede intercambiar el token de usuario por un token de página. Estos son * más largos * pero aún pueden caducar.

* Tokens de aplicación: Principalmente para la configuración y el análisis de la aplicación. No para acceder a los datos del usuario directamente.

* Tokens de larga vida: Facebook ofrece la capacidad de intercambiar tokens de corta duración por los de larga vida. Esto es esencial para los procesos de fondo.

* Gestión del token: Implemente la gestión de token adecuada en su aplicación. Almacene los tokens de forma segura y actualice cuando sea necesario.

* Limitando la velocidad: Facebook hace cumplir los límites de tasa para evitar el abuso de la API. Su código * debe * manejar la limitación de la velocidad. Si excede los límites, sus solicitudes estarán estranguladas (retrasadas) o bloqueadas. La API proporciona encabezados que indican el estado del límite de velocidad (por ejemplo, `X-App-Usage`). Implemente la lógica de reintento con retroceso exponencial para manejar la limitación de la velocidad con gracia. El `Facebook-SDK` podría ofrecer algunos mecanismos de reintento incorporados.

* Manejo de errores: El manejo de errores robusto es crítico. La API del gráfico de Facebook puede devolver varios códigos de error. Maneje estos errores adecuadamente (por ejemplo, registre el error, vuelva a intentar la solicitud, notifique al administrador).

* Privacidad de datos: Tenga mucho cuidado al manejar los datos del usuario. Realice las políticas de desarrolladores de Facebook y las regulaciones de privacidad de datos (por ejemplo, GDPR, CCPA). Obtenga el consentimiento necesario de los usuarios antes de recopilar sus datos. Almacenar datos de forma segura.

* Cambios de API de Facebook: La API del gráfico de Facebook está sujeta a cambios. Manténgase actualizado con la última documentación de API y anuncios. Pruebe regularmente su código para asegurarse de que todavía funcione correctamente. Facebook frecuentemente desacelera las versiones anteriores de la API.

* Procesamiento asincrónico: Si necesita procesar un gran volumen de comentarios, considere usar el procesamiento asincrónico (por ejemplo, usar una cola de tareas como el apio o la cola de redis) para evitar bloquear su hilo de la aplicación principal.

* API delta (para actualizaciones casi en tiempo real): Para monitorear constantemente nuevos comentarios, la API delta (parte de la API de gráficos) es útil. Le permite recuperar solo los cambios (nuevos comentarios, comentarios eliminados, comentarios actualizados) desde la última vez que lo revisó. Esto es más eficiente que buscar repetidamente todos los comentarios.

* Filtrado y búsqueda (capacidades de API de gráficos): Explore las capacidades de filtrado y búsqueda de la API del gráfico. Puede usarlos para recuperar comentarios basados ​​en criterios específicos (por ejemplo, comentarios que contienen ciertas palabras clave).

* Optimización de la base de datos: Optimice el esquema de su base de datos y consultas para su rendimiento. Use índices apropiados, particiones y almacenamiento en caché.

flujo simplificado:

1. Configuración de la aplicación: Cree una aplicación de Facebook y obtenga los permisos necesarios.

2. Token de acceso: Obtenga un token de acceso de larga vida.

3. Conexión de la base de datos: Conéctese a su base de datos MySQL.

4. Obtenga ID de publicación: Determine de qué publicaciones de Facebook desea recuperar comentarios.

5. Obtener comentarios: Use la API gráfica para obtener comentarios para cada publicación. Manejar la paginación y la limitación de la velocidad.

6. Transformación de datos: Transforme los datos de comentarios en un formato adecuado para su base de datos. Agregue la identificación de publicación a cada comentario.

7. Inserte en la base de datos: Inserte los datos de comentarios en la tabla 'Comentarios'. Use consultas parametrizadas para evitar la inyección de SQL.

8. Manejo de errores: Implementar el manejo integral de errores en todo el proceso.

9. Gestión de tokens: Almacene y actualice el token de acceso de forma segura.

Esta guía completa debería ayudarlo a guardar los comentarios de Facebook con éxito en su base de datos MySQL. Recuerde priorizar la privacidad y la seguridad de los datos durante todo el proceso de desarrollo. ¡Buena suerte!

Facebook
Cómo denunciar un comentario en Facebook
Cómo cambiar sin esfuerzo la fuente en una publicación de Facebook desde tu iPhone
¿Debería eliminar y volver a publicar en Facebook Marketplace? Tal vez
Cómo cerrar sesión en Facebook y Messenger en todos los dispositivos
¿Cómo se descargan imágenes de Facebook en su computadora?
Cómo exportar tus mensajes de Facebook
Cómo conseguir muchos amigos en Facebook rápidamente
Historia de Facebook vs Historia de Messenger:¿la diferencia?
Conocimiento de la computadora © http://www.ordenador.online