2009-12-27 6 views
11

Estoy intentando escribir una aplicación sencilla que permita a un usuario otorgarle permiso a mi código para escribir en la transmisión de Facebook de su página. Según lo entiendo, debería ser tan fácil como:Cómo obtener (y usar) permisos extendidos en Facebook con Python/Django

  1. Haz que el usuario haga clic en un botón que abre una ventana emergente que contiene la página a en mi aplicación de Facebook.
  2. En esa página, hacen clic en algo que concede stream_publish a mi aplicación y le asigna ese permiso a su página.
  3. La ventana se cierra, ahora tengo toda la información que necesito para ejecutar un script en cron para enviar cosas al flujo de la página.

He estado leyendo la wiki por días. Las notas en pyfacebook tienen al menos un año de retraso, y las personas me han señalado la aplicación socialauth para Django, que parece estar igualmente desactualizada y centrada en la orientación de usuarios en lugar de en sus páginas. Ni siquiera puedo hacer el n. ° 1, dejar el n. ° 2 y el 3.

Si alguien pudiera mostrarme cómo usar Django/Python para solicitar/recibir permiso para escribir en una transmisión de Facebook, sería una gran idea comienzo.

Cualquier ayuda sería muy apreciada.

Respuesta

1

Después de una gran cantidad de retoques, que parecen haber resuelto todos mis problemas en Facebookland:

  1. Resulta que tener un usuario haga clic en un botón para conceder permisos es tan fácil como Caio Romão dijo que era . Por mi parte, sin embargo, descubrí que dirigirlos al enlace de la aplicación de escritorio de Facebook era mucho más fácil y confiable.
  2. Usando este método de enlace, Facebook le permite especificar enable_profile_selector=1 que se asegurará de que se genere una lista de páginas desde la cual el usuario puede seleccionar qué páginas (si las hay) otorgarán estos permisos.
  3. Para este uno, Facebook está totalmente roto. Mientras que en # 2 permiten al usuario seleccionar una página para otorgar permisos, no pasan esta información a la aplicación ya sea por medio de un POST o en los encabezados. Simplemente no está allí. En su lugar, debe hacer un truco feo con FQL y algunas preguntas adicionales al usuario para que funcione.

De todos modos, I detailed it all on my blog si alguien está interesado. ¡Gracias por tu ayuda!

3

¿Has mirado minifb? Su examples page muestra básicamente todo lo que necesita saber para solicitar autorización y recibir una clave de sesión. (También, el github page for pyfacebook muestra que la biblioteca aún está vivo)

Por lo tanto, para su escenario se necesitaría:

  1. Solicitud del "stream_publish" permiso. Hay some ways para hacerlo, pero en realidad iría por el más fácil: submitting a form (tenga en cuenta que nunca he hecho una aplicación para Facebook, probablemente estoy equivocado suponiendo que este enfoque es el más fácil :-)
  2. Use su aplicación Normalmente: llame a los métodos de la API utilizando el user_id del usuario que autorizó su aplicación (deberá almacenarla) y, dado que usted fue autorizado, no debería fallar.

Para ello, básicamente, agregar este formulario en su plantilla:

<form promptpermission="publish_stream"> 
<input type="submit" value="Allow Publish Stream"> 
</form> 

Felicitaciones a los desarrolladores de Facebook, por cierto. Muy buena documentación oficial.

EDITAR: No estoy autorizado a comentar sin embargo, tan: En caso de que se enfrentan a problemas obtener el UID, comprobar this question y las referencias.

+0

Haces que suene tan fácil - Tendré que probarlo por la mañana y responderte :-) –

Cuestiones relacionadas