Facebook Api: Pedir permisos al usuario para publicar en su cuenta de Facebook


Nota
La Api de Facebook antigua, en la que está basada la mayor parte de este post, está siendo reemplazada poco a poco por una nueva api de facebook. Es necesario que sepas que Facebook cada día da menos soporte a su antigua api y a Facebook Connect.

Si estás buscando información general sobre este tema te recomiendo que leas los artículos más actuales en la categoría Facebook Graph Api de este mismo blog.

Más concretamente, y en relación a este artículo, puedes leer:

Un tema crítico si queremos hacer SMO con nuestras aplicaciones de Facebook o con nuestras webs ligadas con Facebook Connect es el de pedir los permisos al usuario para que nuestra aplicacion le publique cosas en Facebook.

Dare un pequeño repaso a las distintas formas que hay para conseguirlo. Cada una de ellas se adapta a una forma de hacer esta petición y unas cudrarán más en unas webs que otras.

Lo primero a saber es que permisos debo solicitar al usuario. Existen varios permisos que se nos pueden conceder, unos son más abusivos que otros pero también sus mensajes de advertencia al usuario pueden asustarle más o menos (si es que nos creemos que los usuarios leen estos cuadros…).

Los distintos permisos así como los strings que actuan como identificadores de los mismos pueden encontrarse en este link. Está en inglés, pero no es dificil de entender.

Los usuarios por defecto no tienen ninguno de los permisos activados y hay que pedirles que los activen.

Aprovechando para preguntarlo en un envío de formulario

Si estamos desarrollando aplicaciones internas de Facebook (¡y no con Facebook Connect!) podemos incluir en cualquier formulario una peticiónde permisos. Lo que hará Facebook es que al procesar el formulario pedirá esos permisos antes de continuar cargando la página de respuesta que será en la que lanzaremos nuestra accion contando con que nos han dado permisos.

Tu nuevo status:

Usando Facebook Connect

Para mi, la forma y más fácil y controlada para conseguir permisos es con Facebook Connect ( como usar facebook connect ). Ahí, si usamos la api javacript de facebook tenemos un método llamado showPermissionDialog() que nos permite sacar una ventana modal pidiendo el permiso que queramos…

// FB.Connect.showPermissionDialog( stringId_del_permiso, callback );

FB.Connect.showPermissionDialog("status_update",function(r) {
if (r) alert("Ya tienes permisos para publicar status");
else alert("Vaya! no te han dado permiso");
});

Usando FBML (FaceBook Marckup Language)

Entre la api de etiquetas FBML está una que genera un link para pedir permisos:

 
Dar permisos para leer y publicar tu estado

Usando redirección en el servidor

En el proceso de nuestro servidor podemos provocar una redirección al usuario hacia una pagina de petición de permisos. La url es la siguiente:

http://www.facebook.com/authorize.php?api_key=[[APIKEY]]&v=1.0&ext_perm=[[STRINGID_DEL_PERMISO]]&next=[[URL_SI_DA_EL_PERMISO]]&next_cancel=[[URL_SI_NO_LO_DA]]

$hasPermission =  $facebook->api_client->call_method("facebook.users.hasAppPermission",array(
  'uid'			=> $user_id,
  'ext_perm'		=> 'share_item'
));
if ( !$hasPermission )
{
  $urlNext = "/mipagina";
  $urlNextCancel = "/mipagina2";
  header( "location: http://www.facebook.com/authorize.php?api_key=".$appapikey."&v=1.0&ext_perm=share_item&next=" . urlencode($urlNext) . "&next_cancel=" . urlencode($urlNextCancel) );
  die();
}

Esta es la forma más compleja de hacerlo y la que más problemas puede dar. En las pruebas que he hecho el cuadro se mostraba sin problemas pero he recibido avisos de personas a las que Facebook se les queja de que están haciendo demasiadas redirecciones. Tengo que mirar si encuentro una forma de evitar ese aviso en todas las aplicaciones.

A mi me parece que la forma más cómoda y controlada es la Api javascript de Facebook Connect, pero como veis, para gustos, colores…


8 respuestas a “Facebook Api: Pedir permisos al usuario para publicar en su cuenta de Facebook”

  1. Es necesario tener una aplicación de Facebook para poder postear a una página de facebook desde mi web??
    Gracias por la respuesta.

  2. No hace falta Ariel, mira un componente sencillo como Share It, o un botón sencillo como el que tiene puesto ikhuerta donde dice «Comparte este artículo», no hace falta crear una aplicación, pero el origen del comentario para el muro al compartir no será tu página sino el propio motor de Facebook…
    entiendes?
    saludos

  3. Hola, quisiera saber como tengo que hacer para pedir «permiso» para crear un Rol en FB, para diversion con un grupo de amig@s de un libro que estamso leyendo. He visto que grupos de rol tienen los permisos dados y sinceramnete no se como conseguirlos

  4. Hola, quería saber como hacer con PHP para averiguar que permisos concedió determinado usuario a mí aplicación.

  5. Tengo una pregunta:

    Quiero hacer esto mismo, que para acceder a un archivo a descargar en mi página, los usuarios deban clickear en un botón «me gusta», y una vez hecho eso, aparezca en el muro de ese usuario un mensaje como «he descargado el archivo xxxx etc.» . Luego que el usuario ponga «me gusta» re dirigirlo al archivo a descargar. Como podré hacer eso?

  6. hola como hago para compartir comentarios pongo todos y me dice no tiene suficiente permiso

  7. Hola actualmente tengo una api que permite tomar los permisos basicos
    como foto de usuario, email y nombre. tengo un problema mi api funciona solo de google chrome cuando intento hacer el llamado desde otro navegador no funciona. tiene alguna idea de que sea?

Responder a Marcelo Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *