Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Diabliyo en 25 Agosto 2011, 23:45 pm



Título: [API Facebook + Url Amigables] Problema para implementacion !
Publicado por: Diabliyo en 25 Agosto 2011, 23:45 pm
Buenas...

Estoy queriendo implementar en mi portal la posibilidad de que mis futuros usuarios y actuales, sincronicen su perfil de face.

Buscando en la red encontre bastantes manuales pero desgraciadamente la mayoria estan planificados bajo una version obsoleta del API Facebook, por lo cual hasta los nombres de las funcionas ya no son igales, en conclusion, no sirve ningun manual (casi ninguno).

Asi que lo unico que me quedo, fue leerme el Doc de Authentificacion y el example.php de la libreria facebook para PHP. Con esto he logrado hacer hasta ahorita solamente:

1- Generar enlace valido para el boton facebook que enlace a mi APP.
2- Mostrar mi APP y esperar que el usuario de click en "Allow"

El problema empieza con que una vez se da clic sobre "Allow", automaticamente Facebook re-dirige al usuario a mi sitio invocando una url con los valores de:
Código:
?state=HASH_STATE&code=HASH_BIG#

Pero resulta que por seguridad y simplicidad utilizo url amigables, de modo que el boton facebook por el momento solo lo muestro en la Configuracion del Perfil, al acceder a tu configuracion se invoca la URL: http://misitio.com/usuario/perfil.

Asumiendo la URL que les mencione, el boton de Facebook se crea mas o menos asi con el siguiente enlace:

Código
  1. <?php
  2. echo '<a href="https://www.facebook.com/dialog/oauth?client_id=HASH_ID&amp;redirect_uri=http://misitio.com/usuario/perfil&state=HASH_ESTADO">
  3.     <img src="botonfb.jpg" border="0">
  4. </a>
  5. ?>

Al dar click sobre el boton de Facebook Connect, me envia a Facebook con mi APP cargada, y al pulsar Allow, me retorna a mi sitio a esta URL:
Código:
http://misitio.com/usuario/perfil?state=HASH_STATE&code=HASH_CODE#

De primeras asumo que al estar asi mi RewriteRule:

Código:
RewriteRule ^(.+)/perfil$ index.php?my=$1

Las variables GET de state y code se pierden !, asi que AGREGUE lo siguiente cambio:
Código:
RewriteRule ^(.+)/perfil$ index.php?my=$1
RewriteRule ^(.+)/perfil?state(.+)&code=(.+)$ index.php?my=$1&state=$2&code=$3

Pero aun asi,  algo sale mal porque me sale error de que no encuentra la pagina, no se si sea mi implementacion de RewriteRule, pero ya hasta agregue un \ antes de los caracteres: ? y =. Y lo mismo :(...

Solo quiero tomar las variables state y code, para guardar en la BDD e inmediatamente (al detectar dichas variables) redireccionar al perfil normal: http://misitio.com/usuario/perfil y cuando mi sistema nota que ya esta el ID de Face en la BDD, se supone que muestro la FOTO del perfil y el boton de Des-sincronizar Plataforma.

Saludos !