Autor Tema: [UNITY] Integrar Facebook con Unity  (Leído 4700 veces)

joseahp

  • New Jammer
  • *
  • Mensajes: 19
  • Molas: 5
[UNITY] Integrar Facebook con Unity
« en: 31 de Julio de 2015, 08:41:04 pm »
Buenas!

Llevo toda la tarde liado con el SDK de Facebook y Unity3d para añadir un simple botón que se loguee en Facebook y comparta una publicación. Supuestamente es algo muy sencillo pero no logro hacerlo, la documentación me parece demasiado escueta o quizás es para versiones anteriores pero no consigo aclararme xD. Lo máximo que he conseguido es añadir el SDK al proyecto y probar la escena de prueba que incluye.

https://developers.facebook.com/docs/games/unity/unity-tutorial
https://www.youtube.com/watch?t=432&v=NxJ_rumFc9E

Seguro que aquí hay más de uno lo ha conseguido hacer, a ver si me podéis echar una mano!

MiguelCriado

  • Socio
  • Jammer
  • **
  • Mensajes: 86
  • Molas: 24
    • Twitter
Re:[UNITY] Integrar Facebook con Unity
« Respuesta #1 en: 31 de Julio de 2015, 10:24:29 pm »
Si no te importa usar plugins de terceros, yo te recomiendo Soomla, que te proporciona un wrapper para el SDK de Facebook muy fácil de usar, pero también de Google+ y twitter. Además de eso, puedes importar módulos para las compras in-app de las tiendas de las app stores (Google Play, Apple Store y la de Amazon), otros módulos propios para registro de uso, publicidad, etc. Todo opcional y gratuito.

Si no lo conoces, al menos échale un vistazo, que te puede sacar de más de un apuro.

Aquí tienes su página: http://soom.la/

Y aquí la documentación: http://know.soom.la/unity/

Edit: se me olvidaba decir que es un proyecto open source, por si te surge la duda: https://github.com/soomla

MiguelCriado

  • Socio
  • Jammer
  • **
  • Mensajes: 86
  • Molas: 24
    • Twitter
Re:[UNITY] Integrar Facebook con Unity
« Respuesta #2 en: 31 de Julio de 2015, 10:29:58 pm »
Por otra parte, si no quieres o no te interesa Soomla, dinos exactamente en qué punto estás atascado, para poder guiarte un poco mejor :P

DavidRico

  • Socio
  • New Jammer
  • *
  • Mensajes: 38
  • Molas: 9
    • Rodaja
Re:[UNITY] Integrar Facebook con Unity
« Respuesta #3 en: 31 de Julio de 2015, 10:41:12 pm »
¿La escena de prueba te funciona? ¿Cuál es la plataforma objetivo: web player, pc, android?

joseahp

  • New Jammer
  • *
  • Mensajes: 19
  • Molas: 5
Re:[UNITY] Integrar Facebook con Unity
« Respuesta #4 en: 31 de Julio de 2015, 11:05:19 pm »
Si no te importa usar plugins de terceros, yo te recomiendo Soomla, que te proporciona un wrapper para el SDK de Facebook muy fácil de usar, pero también de Google+ y twitter. Además de eso, puedes importar módulos para las compras in-app de las tiendas de las app stores (Google Play, Apple Store y la de Amazon), otros módulos propios para registro de uso, publicidad, etc. Todo opcional y gratuito.

Si no lo conoces, al menos échale un vistazo, que te puede sacar de más de un apuro.

Aquí tienes su página: http://soom.la/

Y aquí la documentación: http://know.soom.la/unity/

Edit: se me olvidaba decir que es un proyecto open source, por si te surge la duda: https://github.com/soomla

Conocía Soomla pero pensaba que era solo para compras in-app. Le echaré un vistazo aunque preferiría hacerlo directamente con el SDK ya que solo busco añadir un simple botón que comparta una publicación y no quisiera añadir más contenido innecesario.

Pues tengo añadido el SDK y configurado con el App-id de mi aplicación de Facebook y me he quedado justo en la parte de "Initialize the SDK". En este punto dice que abra el script MainMenu.cs, el cual no está en el SDK pero viendo el vídeo intuyo que antes hay que clonar el repositorio "friendsmash-unity" que si lo incluye. Al añadir ese repositorio a mi proyecto, salen muchos errores de componentes deprecados ya que su última actualización es de hace un año :(

Y ya no sé por donde tirar más.

¿La escena de prueba te funciona? ¿Cuál es la plataforma objetivo: web player, pc, android?

La escena de prueba me funciona (me loguea y me permite publicar) y la plataforma es android.

DavidRico

  • Socio
  • New Jammer
  • *
  • Mensajes: 38
  • Molas: 9
    • Rodaja
Re:[UNITY] Integrar Facebook con Unity
« Respuesta #5 en: 01 de Agosto de 2015, 01:32:13 pm »
En la escena de prueba debe haber un GameObject con un script de Facebook que es el que inicializa el SDK, que será más o menos lo mismo que en el friendsmash. En el código de ese script tendrás que cambiar el id de la aplicación por el tuyo, y poco más. Yo hice todo eso para un juego que estuve haciendo cuando estuve de prácticas en Seis Cocos, pero no tengo el proyecto así que tengo que tirar de memoria xD

JuDelCo

  • En evolución
  • Socio
  • Super Jammer
  • ***
  • Mensajes: 240
  • Molas: 35
  • The Game
    • Twitter
Re:[UNITY] Integrar Facebook con Unity
« Respuesta #6 en: 02 de Agosto de 2015, 08:35:07 pm »
Anda, ¿hace falta un SDK para poder publicar cosas en FB? Pensaba que se podría hacer en plan Twitter, hacer click en un botón y que éste abra un enlace genérico que sea el tipico cuadro de escribir un nuevo tweet pero con el mensaje y la arroba predefinidos, lo que ocurre por ejemplo al compartir un video de youtube por twitter

DavidRico

  • Socio
  • New Jammer
  • *
  • Mensajes: 38
  • Molas: 9
    • Rodaja
Re:[UNITY] Integrar Facebook con Unity
« Respuesta #7 en: 03 de Agosto de 2015, 09:58:25 am »
Desde una aplicación de navegador igual sí se puede hacer algo más fácil, pero desde un juego de Unity no. El SDK trae entre otras cosas implementaciones de las ventanas de facebook en plan el típico cuadro de texto, pero dentro de Unity, de forma que puedas loguear, compartir, etc en facebook sin salir del juego.

MiguelCriado

  • Socio
  • Jammer
  • **
  • Mensajes: 86
  • Molas: 24
    • Twitter
Re:[UNITY] Integrar Facebook con Unity
« Respuesta #8 en: 04 de Agosto de 2015, 12:16:03 am »
Perdón, no he podido escribir esto antes. He tenido problemillas con Unity al migrar a Windows 10 y demás mandanga.

En caso de que todavía sigas con el mismo problema, o por si alguien se encuentra en tu misma situación en el futuro, te he escrito una pequeña clase de prueba con unos cuantos comentarios para intentar aclararte lo básico del manejo del SDK de Facebook.

En este ejemplo supongo que ya tienes el SDK configurado correctamente (si has podido ejecutar la escena de ejemplo debería ser así) y que tienes un botón en la escena para publicar. He incluído solamente el código que tiene que ver con la publicación en el tablón.

Código: [Seleccionar]
using UnityEngine;
using System.Collections;

public class FacebookBasics : MonoBehaviour {

void Awake() {
// Antes de nada, hay que inicializar el SDK de Facebook             
enabled = false;                 
FB.Init(SetInit, OnHideUnity);
}

// esta función se llama automáticamente al terminar la inicialización de facebook
private void SetInit()                                                                       
{                                                                                                                                                             
enabled = true;         
if (FB.IsLoggedIn) {                                                                                                                                       
OnLoggedIn();                                                                       
} else { // al arranque de la aplicación, pedimos al usuario que se loguee. Le pedimos permiso para conocer su email y para publicar en su muro.
FB.Login("email,publish_actions", LoginCallback);
}
}                                                                                           

// esta función se llama tanto cuando Facebook necesita mostrar paneles en pantalla como cuando los oculta
private void OnHideUnity(bool isGameShown)                                                   
{                                                                                                                                                       
if (!isGameShown)                                                                       
{                                                                                       
// aquí deberíamos pausar el juego y asegurarnos de que toda nuestra GUI no reacciona a pulsaciones de pantalla                                           
Time.timeScale = 0;                                                                 
}                                                                                       
else                                                                                     
{                                                                                       
// aquí deberiamos volver el juego a la normalidad. Facebook acaba de ocultar un panel propio                               
Time.timeScale = 1;                                                                 
}                                                                                       
}   

// callback para después del intento de logueo
void LoginCallback(FBResult result) {
// si el usuario se ha logueado. OJO: es posible que el usuario haya cancelado el logueo. Habría que manejar eso.
if (FB.IsLoggedIn)                                                                     
{                                                                                     
OnLoggedIn();                                                                     
}             
}

void OnLoggedIn()                                                                         
{                                                                                         
Debug.Log("Logged in. ID: " + FB.UserId);                                           
}   

// En mi ejemplo, llamo a esta función con un botón de la GUI. No tiene mucha complicación
public void Publicar() {
// OJO: deberíamos asegurarnos de que el usuario esta logueado. Además de esto, si el usuario no lo está, ¡el boton de publicar ni siquiera debería estar activo!
FB.Feed(                                                                                                                 
        linkCaption: "Texto que contendrá el elemento compartido en el muro",               
        picture: "http://i.imgur.com/ZhxuCCl.jpg",                                                     
        linkName: "Título de la cosa a compartir",                                                                 
        link: "http://foro.malagajam.com/index.php?topic=167.0"     
        ); 
}

}

Este ejemplo pretende ser lo menos exhaustivo posible. Como es evidente, en un caso de uso real debería manejar muchas situaciones excepcionales que no están contempladas en este código para ganar en claridad.

Espero que te sirva y si tienes alguna duda más, aquí estamos para intentar ayudar ;)

Nota: @JaviCepa ¿hay alguna forma de decirle al código qué lenguaje estoy usando? Para que resalte la sintaxis un poco mejor.

JaviCepa

  • Socio
  • Mega Jammer
  • ****
  • Mensajes: 433
  • Molas: 45
    • @JaviCepa
Re:[UNITY] Integrar Facebook con Unity
« Respuesta #9 en: 04 de Agosto de 2015, 09:03:16 am »
Creo que no, pero investigaré la docu del plugin

joseahp

  • New Jammer
  • *
  • Mensajes: 19
  • Molas: 5
Re:[UNITY] Integrar Facebook con Unity
« Respuesta #10 en: 04 de Agosto de 2015, 10:04:05 am »
Gracias a todos por la ayuda. No he posteado nada porque por motivos personales no he tenido tiempo de volver a meterle mano. Entre hoy y mañana me vuelvo a poner con ello y comento mis avances.

joseahp

  • New Jammer
  • *
  • Mensajes: 19
  • Molas: 5
Re:[UNITY] Integrar Facebook con Unity
« Respuesta #11 en: 04 de Agosto de 2015, 11:37:06 pm »
@MiguelCriado con tu código va perfecto, muchas gracias!

Si que era muy fácil pero me hice un lio mirando la escena de ejemplo y la documentación de Facebook. De todas formas voy a probar también con Soomla.

MiguelCriado

  • Socio
  • Jammer
  • **
  • Mensajes: 86
  • Molas: 24
    • Twitter
Re:[UNITY] Integrar Facebook con Unity
« Respuesta #12 en: 04 de Agosto de 2015, 11:51:13 pm »
@MiguelCriado con tu código va perfecto, muchas gracias!

Si que era muy fácil pero me hice un lio mirando la escena de ejemplo y la documentación de Facebook. De todas formas voy a probar también con Soomla.

Me alegro de que te haya servido. Soomla está muy bien. No sólo te facilita este tipo de cosas, sino que te ofrece un montón de funcionalidad más por 0€. Merece la pena.

JavierOrtiz

  • Jammer
  • **
  • Mensajes: 86
  • Molas: 8
Re:[UNITY] Integrar Facebook con Unity
« Respuesta #13 en: 16 de Agosto de 2015, 02:22:22 pm »
Este post me ha ahorrado muuuuucho tiempo jaja, gracias a todos!! ;)