Re: Plugin de Facebook

83 views
Skip to first unread message

Mariano Finochietto

unread,
Jan 4, 2013, 1:19:36 AM1/4/13
to cakep...@googlegroups.com
Hola estebanzeus!

Estos 2 días estuve trabajando bastante sobre el Plugin y quedó bastante mas potente y más fácil de usar.. Ya actualizé las instrucciones: http://marianofino.github.com/Facebook-Plugin-for-CakePHP/

Si no te funciona algo o no entendés, avisame que lo reviso!!

Cualquier aporte es bienvenido! Espero tus comentarios!
Saludos!!

El jueves, 3 de enero de 2013 10:22:18 UTC-3, estebanzeus escribió:
me parece espectacular, hoy mismo lo bajo y le echo una mirada haber si puedo apoyar en algo.

El martes, 1 de enero de 2013 12:29:01 UTC-3, Mariano Finochietto escribió:
Hola comunidad!

Estoy desarrollando una app basada casi exclusivamente en Facebook y luego de probar todos los plugins que encontré decidí empezar a desarrollar el mío porque ninguno me convencía. Lo que estoy haciendo es una combinación de un objeto para Auth y un DataSource basado en FQL (luego lo extenderé a Graph seguramente).

Todos los que quieran aportar de alguna manera son bienvenidos!

La web por ahora está en inglés, pero pronto lo traduciré al español.


Un abrazo y feliz año!!

Lean

unread,
Jan 7, 2013, 2:07:51 PM1/7/13
to cakep...@googlegroups.com
El 04/01/2013 03:19 a.m., Mariano Finochietto escribió:
porte es bienvenid
Hola, estoy usando el plugin de Facebook para el logueo de usuarios a mi web, y todo bien ahsta que le doy "permitir" a la aplicacion desde facebook, y me salta este error:

( ! ) Fatal error: Call to undefined method FacebookAppModel::schema() in C:\wamp\www\pablogti.com.ar\lib\Cake\View\Helper\FormHelper.php on line 196

Segui todos los pasos de la pagina de tu plugin, pero no encontre que puede estar causando este error.

Mariano Finochietto

unread,
Jan 7, 2013, 2:50:25 PM1/7/13
to cakep...@googlegroups.com
Hola Lean!

Sospecho que debe estar intentando guardar algo usando el datasource de facebook.. Más que nada porque el schema() sirve para eso y el FormHelper no lo uso en el plugin.

Me podrás pasar estas 3 cosas??
  1. La URL a la que te redirige Facebook después que ponés "permitir"
  2. La acción de esa url
  3. La vista de esa url
Gracias!

Lean

unread,
Jan 7, 2013, 3:05:32 PM1/7/13
to cakep...@googlegroups.com
--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP en Español" de Grupos de Google.
Para ver este debate en la Web, visita https://groups.google.com/d/msg/cakephp-esp/-/2gj3088KmeMJ.
Para publicar una entrada en este grupo, envía un correo electrónico a cakep...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a cakephp-esp...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/cakephp-esp?hl=es.
bien despues de poner "Login" iniciar secion en facebook y clickear en "Ir a la aplicacion" , ahora tira otro error:
Fatal error: Call to a member function loginButton() on a non-object in C:\wamp\www\mysite.com.ar\app\View\Users\login.ctp on line19


la accion login es la del plugin no modifique nada , y la vista :


<?php echo $this->Session->flash('auth'); ?>
<?php echo $this->Form->create('User');?>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<th>Username</th>
<td><?php echo $this->Form->input('username',array('class'=>'login-inp','label' => false));?></td>
</tr>
<tr>
<th>Password</th>
<td><?php echo $this->Form->input('password',array('onfocus'=>'this.value=""','class'=>'login-inp','label' => false));?></td>
</tr>
<tr>
<th></th>
<td><?php echo $this->Form->input(' ',array('type'=>'submit','class'=>'submit-login'));?></td>
</tr>

<tr>
<th></th>
<td><?php echo $this->Facebook->loginButton();?></td>
</tr>

<tr>
<th></th>
<td><?php echo $this->Html->link('Logout', array('plugin' => 'facebook', 'controller' => 'users', 'action' => 'logout'));?></td>
</tr>

</table>
no modifique nada y ahora salta ese error ._. . Gracias de antemano

Mariano Finochietto

unread,
Jan 7, 2013, 11:53:49 PM1/7/13
to cakep...@googlegroups.com
Hola Lean!

Me podrías confirmas 2 cosas:
  1. La url que te arroja error es asi: {urldecake}/facebook/users/login ??
  2. En este último error que mandas parece que no cargó el helper.. Asegurate de que esté cargado en el controlador de la acción y cuentame.. (añadiendo "Facebook.Facebook" al atributo $helpers = array())

Gracias a vos porque el feedback me sirve..
Mañana estoy liberando una nueva versión del plugin con mejoras y código más limpio..

Saludos!

Albert Cansado Solà

unread,
Jan 8, 2013, 3:58:16 AM1/8/13
to cakep...@googlegroups.com
Hola,

El plugin tiene muy buena pinta. Revisando el código he visto que dentro la carpeta Model, en la classe FacebookAppModel esta declarada así:

class FacebookAppModel extends AppController {
}

No debería ser extends AppModel al ser un modelo?

Un saludo!

Lean

unread,
Jan 8, 2013, 1:04:41 PM1/8/13
to cakep...@googlegroups.com
Para ver este debate en la Web, visita https://groups.google.com/d/msg/cakephp-esp/-/YGwc0nUHZYYJ.

Para publicar una entrada en este grupo, envía un correo electrónico a cakep...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a cakephp-esp...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/cakephp-esp?hl=es.
Si la url que tira el error es  {urldecake}/facebook/users/login?state= .....  y el helper esta puesto asi en el controlador users donde esta la accion login :

<?php
App::import('Controller','AppController');
class UsersController extends AppController {
    var $name='Users';
    var $titulo = 'Usuarios';
    public $helpers = array('Facebook.Facebook');
   

Mariano Finochietto

unread,
Jan 8, 2013, 3:04:01 PM1/8/13
to cakep...@googlegroups.com
Hola Lean!

Me llama mucho la atención el error, porque claramente no está cargando el helper.. Fijate 2 cosas más:
  1. Agrega esta linea en la acción login() de Plugin/Facebook/Controllers/UsersController.php:  $this->helpers[] = 'Facebook.Facebook';
  2. Bajate la última versión del plugin y revisa las instrucciones porque cambiaron un poco desde la última vez..
Si nada de lo anterior te funciona, si querés mandame la app que la reviso más facil desde mi compu y te digo..

Saludos!

Mariano Finochietto

unread,
Jan 8, 2013, 3:06:26 PM1/8/13
to cakep...@googlegroups.com
Hola Alberto!

Gracias por avisar.. Ya lo corregí en la última versión..

Saludos!

Lean

unread,
Jan 9, 2013, 1:54:31 PM1/9/13
to cakep...@googlegroups.com
El 08/01/2013 05:04 p.m., Mariano Finochietto escribió:
$this->helpers[] = 'Facebook.Facebook';
bien, tanto agregando esa linea en el controlador del plugin, como agregando el helper en el AppController de la aplicacion, el error desaparecio, pero ahora cuando le doy al boton login, no hace nada, osea, no tira error, carga la pagina pero se queda en al de logueo, y no te loguea.. hay que hacer algun paso extra despues de loguearte, como cambiar el redirect del login a otra accion, y ahi recuperar de alguna forma el valor que iria en el campo "uid" y salvarlo en la base de datos? es la primera vez que intento usar esto de loguearte/registrarte con facebook..
Gracias

Mariano Finochietto

unread,
Jan 9, 2013, 3:48:31 PM1/9/13
to cakep...@googlegroups.com
Hola Lean!

No, el Uid lo graba automáticamente en la tabla users cuando ingresan por primera vez.. Probé tu aplicación recién pero no me puedo dar cuenta ya que no muestra los errores.. Querés pasarmela y me fijo directamente yo??

Saludos!

Donde dice "loginRedirect" es la url donde hace

Albert Cansado Solà

unread,
Jan 10, 2013, 11:46:18 AM1/10/13
to cakep...@googlegroups.com
Otra solución y creo que más elegante es que añadieras esta función en UsersController:

function beforeFilter() {
        parent::beforeFilter();
        if(!in_array("Facebook.Facebook", $this->helpers)) {
            $this->helpers[] = "Facebook.Facebook";
        }
    }

De esta forma se añadirá el Helper "automáticamente"

Un saludo

Mariano Finochietto

unread,
Jan 10, 2013, 3:06:15 PM1/10/13
to cakep...@googlegroups.com
Hola Lean,

Estuve viendo tu aplicación, pero te respondo por acá asi le llega a todos.. Arreglé 2 cositas y ya funciona perfecto.. Estas son:

1) Estaba mal configurada la variable "Auth" en el App Controler.. Tiene que ser así:

'Auth' => array(
'loginAction' => array(
'plugin' => 'facebook',
'controller' => 'users',
'action' => 'login'
),
'loginRedirect' => '/',
'logoutRedirect' => '/',
'authenticate' => array(
'all' => array('userModel' => 'User'),
'Facebook.Oauth'
)
)

Si te fijas bien en tu app tenés comentada unas líneas que te terminan separando el array en 2 parámetros.

2) El modelo de la tabla user.php debe llamarse User.php (primera letra con mayúscula).. Esto es por convención de Cake..

Probá haciendo eso y cualquier cosa decime!! Saludos!


--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP en Español" de Grupos de Google.
Para ver este debate en la Web, visita https://groups.google.com/d/msg/cakephp-esp/-/5NPLNVbG1DUJ.

Para publicar una entrada en este grupo, envía un correo electrónico a cakep...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a cakephp-esp...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/cakephp-esp?hl=es.



--
Mariano Finochietto

Lean

unread,
Jan 10, 2013, 3:54:05 PM1/10/13
to cakep...@googlegroups.com
Bien , gracias Mariano , ahora si se loguea con facebook, pero tengo un pequeño problema mas, ahora solo me permite loguearme con facebook, y no con el login nomral de los usuarios que tenga yo en mi base.. probe sacando el linkeo de auth con facebook (eso que tenia mal yo en el controller) y me deja loguearme bien, con los datos de mi base, pero si habilito eso para poder loguearme con facebook,  el otro modo de logueo deja de andar.. , hay alguna forma de mantener los dos tipos d e logueo? poder usar el de facebook y el normal ?..

Lean

unread,
Jan 10, 2013, 4:20:41 PM1/10/13
to cakep...@googlegroups.com
El 10/01/2013 05:06 p.m., Mariano Finochietto escribió:
Ya arregle ese problema de que no me dejaba usar los dos tipos de logueo.. cambie el plugin haciendo:

App::uses('AppFacebookController', 'Controller');
class FacebookAppController extends AppFacebookController{

donde "AppFacebookController" es un controlador que cree yo que tiene el linkeo con auth, entonces ya no hereda de AppController sino que hereda de ese controlador que cree, y en el AppController , le saque el linkeo con face, de esta forma se puede loguear tanto por facebook , como de la forma normal con usuairos registrados en mi base

Mariano Finochietto

unread,
Jan 11, 2013, 4:25:13 PM1/11/13
to cakep...@googlegroups.com
Hola Lean! Muy interesante tu aporte! Voy a ver como lo puedo incluir en la próxima versión del Plugin para que venga por defecto. Estos días estuve corrigiendo bugs, asique te recomiendo que cada tanto te bajes una nueva versión hasta que esté más estable.. Cualquier otro problema que tengas avisame!

Saludos!
--
Mariano Finochietto
Reply all
Reply to author
Forward
0 new messages