Búsqueda de sitios web

php - Facebook requests 2.0, ¿cómo cambiar la URL del botón "Aceptar" para que sea una URL fuera de Facebook?


Mi aplicación está fuera del lienzo de Facebook. El cuadro de diálogo de solicitudes de Facebook 2.0 solo redirige a la URL del lienzo, por ejemplo, apps.ibibo.com/YOURAPP. ¿Cómo puedo hacer que se abra una URL personalizada? Esto era posible en el formulario FBML heredado con fb:request-form y estableciendo req-url.

¿Las solicitudes 2.0 están restringidas solo a URLS dentro de Facebook? Mi requisito es enviar solicitudes de juego, pero mi juego está fuera de Facebook. Es decir, al hacer clic en "ACEPTAR" la URL que se debe abrir debería ser

"http://www.mydomain.com/mygame" y no

"http://apps.facebook.com/mygame".

Estos métodos no parecen ajustarse a mi requisito: http://developers.facebook.com/docs/reference/dialogs/requests/ (solo redirección de URL de canvas)

Se me ocurrió una solución alternativa así: El usuario hace clic en "ACEPTAR" y llega a la URL del canvas, y desde la URL del canvas, lo redirijo a mi URL fuera de Facebook. Pero no estoy seguro de si eso cumple con la política de Facebook (mencionado aquí en el punto #4 del primer párrafo: http://developers.facebook.com/blog/ )

Respuesta #1

Necesito un script de jQuery para sobrescribir la función predeterminada de Facebook. Sin embargo, esto solo funciona cuando la persona va a "http://apps.facebook.com/mygame" y hace clic en 'agregar aplicación'.

Más sencillo tener solo una página de bienvenida, los usuarios hacen clic en "JUGAR" y se abre una nueva ventana hacia tu página.

Leer más: http://developers.facebook.com/blog/post/525/ - ¡buena suerte codificando!

Pon <button id="fb-auth">Login</button> en algún lugar de la página de mygame y añade este código javascript:

function updateButton(response) {
  //Log.info('Updating Button', response);
  var button = document.getElementById('fb-auth');

  if (response.status === 'connected') {
      //button.innerHTML = 'Logout';
      button.onclick = function() {
        FB.logout(function(response) {
          //Log.info('FB.logout callback', response);
        });
      };
    } else {
      //button.innerHTML = 'Login';
      button.onclick = function() {
        FB.login(function(response) {
          //Log.info('FB.login callback', response);
          if (response.status === 'connected') {
            //Log.info('User is logged in');
            window.open("http://xxxxxxxxxxxxxxxx/some.html");
          } else {
            //Log.info('User is logged out');
          }
        });
      };
    }
};

// run it once with the current status and also whenever the status changes
FB.getLoginStatus(updateButton);
FB.Event.subscribe('auth.statusChange', updateButton);

Respuesta #2

Desafortunadamente, el botón de aceptar en este momento siempre te llevará a la página de la aplicación, como estás viendo, y no hay forma en este momento de que vaya a otro lugar. Tendrías que redirigirlos desde la página del canvas. Sin embargo, no veo esto como algo en contra de la política de Facebook, ya que las solicitudes de Facebook pueden ser enviadas originalmente desde fuera de Facebook usando el complemento iframe. Si quisieras poder poner una URL externa para el botón de aceptar, te recomendaría registrar una solicitud de función con Facebook.