Erro no upload de imagens no facebook via curl

Publicado 22/07/2011 em Outros.    

Usamos aqui na agência uma classe própria e bem simples para trabalhar com a api do facebook. Na tentativa de incrementar esta classe, e adicionar um método simples para upload de imagens no album do facebook, me deparei com um problema quando testava em localhost. A imagem simplesmente não subia e nenhum erro era retornado.

Fazendo uma pesquisa, descobri que faltavam dois paramêtros a serem passados para o curl e que provavelmente por isso a imagem não subia.

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

No fim ficou parecido com isso:

$ci = curl_init();

$url =’https://graph.facebook.com/'.$album_id.'/photos?access_token=’.$session->access_token';

curl_setopt($ci, CURLOPT_URL, $url);
curl_setopt($ci, CURLOPT_HEADER, false);
curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ci, CURLOPT_POST, true);
curl_setopt($ci, CURLOPT_POSTFIELDS, $args);
curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

$contents = curl_exec($ci);

if (!empty($contents))
{
return json_decode($contents,true);
}

Os dois paramêtros finais resolveram meu problema.



Sem comentários.

Datamapper inteiro longo (bigint)

Publicado 18/07/2011 em Outros.    

Por padrão o datamapper para o codeigniter converte id’s da cláusula where em um inteiro de PHP. Na prática isso pode gerar uma série de problemas, já que em alguma aplicações precisamos de um inteiro longo (bigint do mysql por exemplo) e o valor máximo de um inteiro do PHP em máquinas de 32 bits é 2147483647*.

Para resolver esse problema é necessário mudar essa regra do datamapper. Para isso basta buscar a propriedade $this->_field_tracking (por volta da linha 556 do datamapper versão 1.8).

Mudar:

$this->_field_tracking = array(
'get_rules' => array(),
'matches' => array(),
'intval' => array('id')
);

por:

$this->_field_tracking = array(
'get_rules' => array(),
'matches' => array(),
'intval' => array()
);

*Em servidores de 64bits a preocupação é bem menor, já que o inteiro do PHP passa a armazenar o valor de até 9223372036854775807.


Sem comentários.

Hífen nos controllers do codeigniter

Publicado 23/05/2010 em CodeIgniter, PHP.    

Recentemente o analista da agência onde trabalho (analista web que fique claro), me disse que o google vê diferença sim, entre hífens(-) e underlines (_), e que os primeiros são preferíveis.
Resumindo a opera, precisei mudar a forma como o codeigniter interpreta os controllers através da uri, pois como sabemos, não é possível usar hífen nos nomes dos controllers.
Entre todas as soluções que pesquisei, encontrei uma no fórum do codeigniter.com que achei bem simples e funcional, segue:
Dentro da pasta application/config abra o arquivos hooks.php e adicione a ele as seguintes linhas:

var $remove_acentos    =  TRUE;

$hook['pre_system'] = array(
'class' => '',
'function' => 'prettyurls',
'filename' => 'myhooks.php',
'filepath' => 'hooks',
'params' => array()
);

Em seguida dentro da pasta application/hooks, crie um arquivo com o nome informado no passo anterior, neste caso myhooks.php, com a função também informada no passo acima:

function prettyurls() {
if (is_array($_GET) && count($_GET) == 1 && trim(key($_GET), '/') != '') {
$newkey = str_replace('-','_',key($_GET));
$_GET[$newkey] = $_GET[key($_GET)];
unset($_GET[key($_GET)]);
}
if (isset($_SERVER['PATH_INFO'])) $_SERVER['PATH_INFO'] = str_replace('-','_',$_SERVER['PATH_INFO']);
if (isset($_SERVER['QUERY_STRING'])) $_SERVER['QUERY_STRING'] = str_replace('-','_',$_SERVER['QUERY_STRING']);
if (isset($_SERVER['ORIG_PATH_INFO'])) $_SERVER['ORIG_PATH_INFO'] = str_replace('-','_',$_SERVER['ORIG_PATH_INFO']);
if (isset($_SERVER['REQUEST_URI'])) $_SERVER['REQUEST_URI'] = str_replace('-','_',$_SERVER['REQUEST_URI']);

}

Agora basta habilitar os hooks no config.php e provavelmente tudo funcionará como o esperado:

$config['enable_hooks'] = TRUE;

Agora um controller que antes era chamado através da url “conheca_a_empresa”, por exemplo, poderá ser chamado através da uri “conheca-a-empresa”, sem que você tenha a necessidade de mexer na estrutura que você já tinha.
O mais legal desta solução é que você pode continuar chamando os controllers da maneira antiga, o que garante que sua aplicação continue funcionando sem nenhum tipo de problema.


Sem comentários.

Sobre

Kynho, 24 anos, apaixonado por web desde 2002. Atualmente freelancer e desenvolvedor web de uma agência de publicidade agência de TI em São Paulo.



Categorias