2011-02-08 17 views
21

Tengo una aplicación de Facebook que funciona y que la mayoría de los usuarios usarán solo una vez. Al iniciarse en el flujo de trabajo de Facebook, los usuarios indican si desean que se escriba o no su muro. Basado en eso, o solicito el permiso publish_stream o no.Facebook Apps: Permisos adicionales

Más tarde, un pequeño porcentaje de usuarios volverá y utilizará la aplicación de nuevo. Algunas de las personas que anteriormente no querían escribir en el muro (y por lo tanto yo no solicité publish_stream) ahora quieren escribir en su muro.

¿Cómo solicito un permiso adicional después de que el usuario ya haya autorizado la aplicación?

De forma similar, ¿cómo puedo consultar a un usuario para enumerar qué permisos ya han otorgado?

Respuesta

19

Es tan simple como la adición de la nueva autorización para un nuevo fb:login-button:

<fb:login-button scope="publish_stream"> 
    Let me write on your wall! 
</fb:login-button> 

Así, por ejemplo, que haya lo anterior escondido en un DIV y si el usuario marque una casilla de verificación mostrar el DIV y rápido el nuevo ¡permiso!

Un buen vivo ejemplo de esto está en la Facebook Test Console:

  1. clic en Iniciar sesión en "ADD" la aplicación
  2. luego haga clic en examples
  3. Bajo fb.api elegir does-like

Ahora puede ver que incluso después de estar * conectado a la aplicación ion (aplicación de consola de prueba), usted puede en realidad tienen otro botón de inicio de sesión para avisarle al usuario!

EDIT:
Para comprobar si el usuario ha concedido su solicitud de un permiso, sólo tiene que utilizar este FQL:

SELECT read_stream,offline_access FROM permissions WHERE uid=me() 

Esto volvería algo como:

[ 
    { 
    "read_stream": 1, 
    "offline_access": 0 
    } 
] 

para probarlo solo usa la consola de prueba publicada antes.

EDIT 2:
Para construir el enlace de sí mismo sin XFBML o Javascript, sólo tiene que añadir el parámetro scope con las ondulaciones permanentes adicionales (reference):

https://www.facebook.com/dialog/oauth? 
    client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=publish_stream 

O si está utilizando los parámetros PHP-SDK:

$loginUrl = $facebook->getLoginUrl(array(
    "scope" => "publish_stream" 
)); 
+1

Veo que está utilizando FBML para generar el botón de inicio de sesión. ¿Qué ocurre cuando se utiliza el PHP SDK y el método oauth_redirect? Ahí es donde no respeta los permisos adicionales. –

+0

@ScottC: actualicé mi respuesta. – ifaour

0

¡Estaba viendo esto el otro día! Si lee http://developers.facebook.com/docs/authentication, hay varias maneras diferentes de mostrar un pequeño cuadro emergente para solicitar permisos adicionales.

No estoy seguro de cómo funciona esto con una aplicación de Facebook, pero sé en un sitio web usando Facebook Connect, si intentas solicitar permisos que el usuario ya ha aceptado, la página redirige automáticamente a la redirect_url que configura.

Cuestiones relacionadas