2010-07-24 38 views
8

Estoy desarrollando un sitio de comercio electrónico PHP/MySQL con algunos aspectos sociales, y estoy buscando integrarlo con Facebook. Ya tengo un sistema de manejo de registro/sesión de usuario nativo. He logrado incluir el iframe "Complementos sociales", como el botón "Me gusta". Pero realmente me gustaría ofrecer a los usuarios la opción de registrarse en el sitio a través de Facebook durante el proceso de registro nativo.Facebook ¿Iniciar sesión como complemento del inicio de sesión existente?

Entiendo la idea de obtener un token de acceso a través del protocolo OAuth y, finalmente, obtener una identificación de usuario. Mi preocupación es doble:

  1. ¿Este método es seguro? Este es un sitio de comercio electrónico, pero no estoy almacenando ninguna tarjeta de crédito ni ningún otro dato confidencial. No puedo pensar en cómo se puede explotar, ¡pero solo soy una cabeza!

  2. Entiendo cómo recuperar el token inicial y obtener la identificación del usuario durante el proceso de registro. Pero, ¿cómo reconozco a un usuario de retorno (sesión)? ¿Tengo que implementar el Javascript SDK para eso (algo que quiero evitar)? O, ¿manejo las sesiones como si ya las manejara de forma nativa, pero reemplazo una identificación de usuario normal en la cookie de sesión con una identificación de usuario de Facebook cuando corresponda?

Pido disculpas si las respuestas son obvias. Revisé Google y la documentación de Facebook, pero la mitad de los enlaces que encuentro corresponden a artículos de wiki desaprobados de FBConnect, y los nuevos documentos son útiles, pero escasos en los ejemplos. No tengo idea de qué es lo que aún se admite, qué hay de nuevo y cómo hacerlo.

+1

¿Hay alguna razón por la que no desee utilizar SDK? SDK es una envoltura conveniente para todas las cosas de juramento de "bajo nivel" de las que de otro modo tendrías que preocuparte. Simplemente presione el botón 'fb: login-button' en su sitio y luego use una línea de código para obtener la identificación de usuario registrada (ya sea en js o en el lado del servidor). – serg

+0

Supongo que estoy confundido en cuanto a la integración del javascript del lado del cliente con el lado del servidor PHP. El mecanismo de inicio de sesión nativo de mi sitio utiliza la sesión PHP y ya está creado. Estoy confundido sobre los pasos necesarios para tomar la autenticación de inicio de sesión de javascript y establecer una sesión segura de PHP con ella. Sé que JavaScript establece una cookie. ¿Debo confiar en eso y reemplazar toda la configuración de sesión existente? ¡A mi cerebro le cuesta aceptar la idea de involucrar a un tercero durante el proceso de inicio de sesión! –

+0

Normalmente necesitarías las API de JS y PHP para eso. La API de JS se usaría para mostrar los diálogos de inicio de sesión de Facebook, mientras que PHP se puede usar para obtener la identificación de usuario registrada. No necesita preocuparse por la sesión, en PHP api lo inicializaría primero (proporcionando la información de su aplicación), y luego simplemente diría algo como '$ api-> getLoggedUserId()' (no está familiarizado con la sintaxis exacta de php api) . Luego puede almacenar el ID devuelto en una sesión usted mismo si lo desea. Otra opción sería usar FB connect solo para hacer que su registro existente sea más fácil para los usuarios de fb (similar a Digg) (* lo siento quedarse sin espacio *) – serg

Respuesta

14
  1. Sí Oauth es muy seguro. Muchas aplicaciones dependen de él y no hay formas conocidas de explotarlo.

  2. Una forma de hacerlo es almacenar las identificaciones de Facebook de los usuarios para que cuando regresen pueda ver que su identificación ya existe en sus registros y que es un usuario recurrente. Su sesión puede ser diferente (expiró desde la última visita, por ejemplo) por lo que no desea almacenar su token de acceso; pero su identificación de usuario de Facebook siempre será la misma.

Cómo básicamente integré Facebook registro/login en mi sitio es añadí una columna facebook_id en mi tabla de usuarios y un botón "Registrarse con Facebook". Si el usuario hace clic, se autentica con Facebook y recupero una sesión y el usuario es nuevo, me redirecciona a la página de registro, relleno tantos campos como puedo con datos de Facebook (como su nombre) y agrego el ID de Facebook como un campo de entrada oculto. Por lo tanto, cuando se registren, su facebook_id se completará en la base de datos. Esta es la misma página de registro que la estándar, por lo que la única diferencia con un usuario que no pertenece a Facebook es que el campo facebook_id estará vacío. Si lo desea, tampoco puede requerir una contraseña para los usuarios de Facebook.

Para que el usuario inicie sesión, el usuario simplemente hace clic en el botón "Iniciar sesión con Facebook" y se autentica con Facebook. Una vez que Facebook me da la sesión, inicio sesión con el usuario como el usuario que tiene facebook_id como el de la sesión de Facebook. Dado que le preocupa la seguridad, señalaré que esta sesión no se puede falsificar ya que está firmada con la clave secreta de la aplicación que solo usted y Facebook conocen. Si utiliza el SDK de Facebook (que debería), no tiene que preocuparse por la firma y la verificación de la firma. El hecho de que pueda leer información coherente de la sesión significa que el SDK de Facebook lo ha verificado.

This Facebook page es una excelente guía para integrar el registro en Facebook.

+0

Gracias, eso fue genial. Supongo que solo necesitaba una descripción general de alto nivel de cómo funcionaba el mecanismo de inicio de sesión con el manejo de sesión existente. Creo que tengo una idea, ¡ahora para intentarlo! –

Cuestiones relacionadas