Ir al contenido principal

Tips para desarrollo en Facebook

b is undefined

Este error ocurre al tratar de usar la versión antigua del api javascript de facebook junto con la nueva. Como pasa en el siguiente código:

<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US" type="text/javascript"></script>
<script src="http://connect.facebook.net/en_US/all.js"></script>;

Comentariando o eliminando la primera fila corregirá el problema
 
FacebookApiException  :: CurlException
SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 

El problema es que cURL no ha sido configurado para confiar en el certificado HTTPS del servidor. Los conceptos de los certificados y PKI gira entorno a la confianza de los Certificados de Autoridades (Certificate Authorities (CAs))  y por defecto, cURL está configurado para no confiar en ningún CA, así que no confiará en ningún certificado del servidor web. Así que, ¿por qué no hay problema cuando visitas los sitios HTTPS a través de tu navegador web? Como pasa a menudo, los desarrolladores del navegador fueron lo suficiente inteligentes para incluir un listado de CA en los que confiar, cubriendo la mayoría de situaciones,  eso mientras el operador del sitio web haya comprado un certificado de estos CA.
Así que para resolver esto existen dos formas:
1. Forma rápida: configurar cURL para que acepte cualquier certificado. Esto se logra agregando la siguiente línea de código antes de llamar curl_exec()

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

En mi caso particular, esto debe ir en el archivo facebook.php. Esto sin embargo, no es demasiado seguro, por lo que para hacerlo de la forma correcta les proporciono el siguiente link: Using cURL in PHP to access HTTPS (SSL/TLS) protected sites

Enlaces
Campos y conexiones del Graph API
Permisos extendidos


Comentarios

Entradas populares de este blog

Enumerar filas en una consulta con MySQL

Supongamos que tenemos tablas con la estructura siguiente: documentos (iddocumento, nombre_documento, url_original, idtipo_documento, idproyecto) proyectos (idproyecto, nombre_proyecto, longitud, unidad_medida) tipo_documentos (idtipo_documento, descripcion_tipo_documento) Tenemos necesidad de hacer una consulta como la siguiente: "Enumerar todos los documentos en la base de datos agrupados por proyecto" Parece fácil, excepto por el término "enumerar", aquí tienes un truquito para que logres enumerar tus consultas: SELECT (@rownum:=@rownum+1) AS rownum, nombre_documento, descripcion_tipo_documento, nombre_proyecto FROM (SELECT @rownum:=0) r, documentos AS d INNER JOIN proyectos AS p ON d.idproyecto = p.idproyecto INNER JOIN tipo_documentos AS td ON d.idtipo_documento = td.idtipo_documento Pero que tal si te piden que enumeres los proyectos con sus correspondientes documentos?. Teniendo lo anterior es un poco mas sencillo SELECT IF(@fila=proyectos.idproyecto,

¿Avances en el problema de las Direcciones en Nicaragua 2020?

Existen relativamente abundantes artículos quejandose, burlandose, o intentando explicar ( 1 , 2 ) la particularidad de las direcciones nicaragüenses, entre el ruido de quejas, se vislumbran algunas propuestas para crear una nomenclatura estándar, ninguna hasta hoy ha sido implementada. Sin embargo con el advenimiento de la tecnología, incluso en los países con nomenclaturas específicas y alta densidad de señalización, es mas común buscar una dirección en una de las varias aplicaciones existentes(Google Maps, Waze, OpenStreetMap, etc) y esta te guiará paso a paso("turn-by-turn") hacia tu destino. Por eso pienso que en lugar de intentar forzar una nomenclatura que podría tardar años en aplicarse, se debería dar una respuesta tecnológica al problema y luego avanzar hacia la tan anhelada estandarización. Aunque en estos tiempos la movilidad de las personas se ha reducido, al contrario la cantidad de empresas que proveen servicios de envío o transporte hacia domicilios ha crecido

jQuery DataTables y CodeIgniter

Ajax Source Datatables permite configurar fácilmente el origen de datos de la tabla, para que esta sea generada dinámicamente desde el servidor, así que con CodeIgniter tendríamos el siguiente código public function page(){ $data['pedidos'] = $this->pedidos_model->get_pedidos($this->input->post('iDisplayStart')); define('AJAX_REQUEST', 1);//truco para que en nginx no muestre el debug $TOTAL = $this->pedidos_model->total(); echo json_encode(array('aaData'=>$data['pedidos'], 'iTotalRecords'=>$TOTAL, 'iTotalDisplayRecords'=>$TOTAL, 'sEcho'=>$this->input->post('sEcho'))); } Este método producirá algo parecido a esto: {"iTotalRecords":83099,"iTotalDisplayRecords":83099,"sEcho":"2", "aaData":[{"Id":"85514","num":"86109&q