Recomendaciones que te cambian la vida

Hay recomendaciones que te cambian la vida o más bien te la orientan. Además hay casualidades que hacen que las personas que te dan estas recomendaciones te las encuentres. En mi caso ha sido en el IRC en #php-es, así que gracias a David_Hernandez y a nesimo.

Estos enlaces para mí son fundamentales en este momento:

Además de estos libros

 

Cada vez que das a la comunidad, la comunidad te devuelve el doble 😀

La nueva api de facebook 2.4 puede romper tu app con opauth facebook strategy

Este mensaje es para tí desarrollador de php y más concretamente usuario de opauth. Revisa tu software si estás usando opauth-facebook-strategy, por que puede que haya dejado de funcionar o que no funcione en tu próxima puesta en producción.

Para el que no conozca opauth es una capa de abstracción para la autenticación basada en oauth, de forma que se puede usar de una forma muy cómoda entre distintos proveedores del servicio de autenticación, entre ellos los más usados: Facebook, Google, Twitter y Linkedin.

En CakePHP hay un Plugin muy práctico que facilita esta funcionalidad https://github.com/uzyn/cakephp-opauth y las ‘strategies’ que complementan su uso, que son todos y cada uno de los proveedores soportados

En mi caso comencé a usar opauth-facebook para autenticar al usuario en mi aplicación y precargar algunos datos de su cuenta, como el nombre, apellidos y email. Bastante cómodo de implementar por cierto.

El problema ha sido cuando al subir el desarrollo a preproducción, los datos del usuario no eran retornados por la API Facebook ( https://graph.facebook.com/me ) . El usuario se autenticaba correctamente , pero retornaba id y name.

Después de muchas horas, verificando parámetros entre desarrollo y preproducción me he percatado, de que la app de desarrollo había sido creada con la versión 2.2 de la API y la de prepoducción con la 2.4. El cambio no es para nada trivial, y es que por defecto en la versión 2.4 hay que especificar los campos que queremos retornar en cada petición. Aquí aparece el fragmento de CHANGELOG

https://developers.facebook.com/docs/apps/changelog#v2_4_changes

Declarative Fields
To try to improve performance on mobile networks, Nodes and Edges in v2.4 requires that you explicitly request the field(s) you need for your GET requests. For example, GET /v2.4/me/feed no longer includes likes and comments by default, but GET /v2.4/me/feed?fields=comments,likes will return the data. For more details see the docs on how to request specific fields.

Vale, una vez verificado que este era el problema, he modificado el modulo opauth-facebook para que permita vía configuración indicar los campos que queremos retornar.

El probema es que la implementación no permite indicar el número de versión de API a usar, con lo que utiliza la última. Como la utilidad real del módulo es la autenticación y captura de información básica me he limitado a hacer unos cambios mínimos pero funcionales. Podéis echar un vistazo a los cambios aquí https://github.com/jsenin/facebook