Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Recentemente um cliente solicitou integrar a seção de notícias do seu site com o twitter e facebook. Eu comecei a pesquisar sobre o assunto e encontrei algumas soluções para joomla, wordpress, etc... que não era o meu caso. Eu precisava de algo que funcionasse dentro uma aplicação desenvolvida em ZF.
Encontrei um post - PHP: Integrando o Twitter ao seu site – Parte 1 - cujo autor teve a mesma necessidade e ele dividiu o artiho em tres partes e fico bastante claro o processo de publicar algo no site e automaticamente ir para o twitter.
Baixei os plugins necessarios, montei uma pagina de teste fora do ZF e testei com minha conta no twitter.
Funcionou mas de forma não muito satisfatoria. A impressão é que tenho que dar dois posts para que apareça la no meu twitter.
Tentei implementar na aplicação do cliente e faz tudo corretamente mas não posta nada la, fica so no site e também não reporta qualquer erro.
Alguem já conseguiu essa integração com sucesso?
Agradeço qualquer ajuda.
>
Amigo, não é necessário usar bibliotecas externas para integrar o ZF com o Twitter, ele já possui uma biblioteca interna para isso :seta: http://framework.zend.com/manual/en/zend.service.twitter.html
Eu já fiz integração de várias aplicações em ZF com o Twitter e não tive nenhum problema, basta seguir a documentação do manual.
Já com o Facebook eu ainda não integrei usando o ZF, mas acredito que não seja muito complicado seguindo a documentação e usando o Zend_Oauth e Zend_Rest.
Qualquer dúvida posta aí. /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif&key=f16394cbddc7140988e95da40d87cdc04e8fd18618efd400ded17391eb1801ce" alt="thumbsup.gif" />
Oi Amigo, obrigado pela ajuda, realmente eu sou novo no mundo do ZF e ainda tenho muitas dúvidas.
Entrei no link e li e reli mas não consegui pegar o fio da meada. Até baixei um exemplo do Fernando que é uma pequena aplicação ZEND Twitter mas ainda não consegui dar o start aqui.
O que exatamente você quer fazer? Você disse que seu cliente quer integrar a seção de notícias com o Twitter e Facebook, seria apenas para publicar o link de cada nova notícia cadastrada no sistema?
Como eu ainda não integrei o ZF com o Facebook, vou primeiro tentar te ajudar com o Twitter, ok?
Você já criou uma aplicação no Twitter? Caso ainda não tenha criado, acesse o Twitter Developers e crie essa aplicação :seta: https://dev.twitter.com/
>
O que exatamente você quer fazer? Você disse que seu cliente quer integrar a seção de notícias com o Twitter e Facebook, seria apenas para publicar o link de cada nova notícia cadastrada no sistema?
Como eu ainda não integrei o ZF com o Facebook, vou primeiro tentar te ajudar com o Twitter, ok?
Você já criou uma aplicação no Twitter? Caso ainda não tenha criado, acesse o Twitter Developers e crie essa aplicação :seta: https://dev.twitter.com/
Sim, já criei a app la, até fiz alguns testes usando Curl mas o que ocorre é que as vezes o site posta outras não vai nada e não tem qualquer mensagem de erro:
abaixo o codigo que estou usando no site (está fora do ZF pois to fazendo um direcionamento do windows pra o linux)
abaixo o codigo que recebe o post e deve fazer entre a publicação no twitter, o upload do arquivo, gravar na base de dados, etc...
1) Um form para o usuario preencher enviar um arquivo para o portal.
A este arquivo será montado um link na pagina do portal para sua abertura (pdf, jpg ou até mesmo um ppt - Seria um folder de um produto qualquer.
2) No site este link vai aparecer numa determinada seção para quem estiver visitando o site.
3) Gostaria que ao publicar este "folder" no site, o site enviasse um link para o twitter do cliente que quando um usuario acessando o twitter leria a chamada que o remeteria ao site com o folder aberto.
É isso que estou tentando fazer.
Obrigado ai por qualquer ajuda que puder me dar.
Lauro
>
<?php
function debug($var){
echo"<pre>";
print_r($var);
echo"</pre>";
}
$referer = $_SERVER['HTTP_REFERER'];
if(!$referer=='site de onde parte o post')
die('Acesso bloqueado');
$host = "host";
mysql_connect($host, "username", "password") or die("Não foi possível a conexão com o servidor");
mysql_select_db("database") or die("Não foi possível selecionar o banco de dados");
//debug($_POST);
//debug($_FILES);
//die('passei');
if ($_POST){
$_titulo = trim(mysql_escape_string($_POST['titulo']));
$_folder = trim(mysql_escape_string($_POST['folder']));
$_message = trim(mysql_escape_string($_POST['message']));
$_twitter = (int)$_POST['twitter']; //$_twitter = 1;
$_face = (int)$_POST['facebook'];
try {
$atype[] = "application/application/pdf";
$atype[] = "image/png";
$atype[] = "image/jpeg";
$atype[] = "image/gif";
$aatype = join(',', $atype);
//$this->fc->debug($_FILES['userfile']);
$type = $_FILES['userfile']['type'];
$file = $_FILES['userfile']['name'];
if(!stristr($aatype, $type))
throw new Exception(sprintf("Arquivo %s\nformato %s\né inválido!\n\nOs formatos aceitos são: *.jpg; *.png; *.gif ou *.pdf\n\n",
$_FILES['userfile']['name'], $type));
if(!move_uploaded_file($_FILES['userfile']['tmp_name'], 'catalogos/'. $file))
throw new Exception("Erro no envio do arquivo: ". $_FILES['userfile']['error']);
$t = explode('.', strtolower($file));
$icone = sprintf('icone.%s', $t[count($t)-1]);
$link = 'urlprincipal/catalogos/' . $file;
// grava na tabela
$sql = "INSERT INTO lancamentos SET
icone = '$icone' ,
arquivo = '$file',
titulo = '$_titulo',
folder = '$_folder',
link = '$link',
message = '$_message',
twitter = $_twitter,
facebook = $_face";
mysql_query($sql) or die("Erro: " . mysql_error());
$_id = mysql_insert_id();
$remotelink = " Acesse: urlprincipal/suporte/index.php?pg=10&id=$_id";
$len = strlen($remotelink) + 5;
if(strlen($_message . $remotelink) > 250) $_message = substr($_message, 0, 250-$len);
$_message .= $remotelink;
// publica no twitter
if($_twitter):
require_once('twitteroauth/twitteroauth.php');
$consumer_key = 'consumer_key';
$consumer_secret = 'consumer_secret';
$oauth_token = 'oauth_token';
$oauth_token_secret = 'oauth_token_secret';
$connection = new TwitterOAuth(
$consumer_key,
$consumer_secret,
$oauth_token,
$oauth_token_secret
);
$result = $connection->get('account/verify_credentials',array());
if(property_exists($result,'error')){
$msg = '<p>Ooops. Erro de conexão na API do Twitter</p>';}
else{
$msg = '<p>Conectado com sucesso na API do Twitter...</p>';
$msg .= "<p>Publicando mensagem: $_message</p>";
// envia um post
$result = $connection->post(
'statuses/update', array('status' => $_message,)
//'direct_messages/new', array('screen_name' => 'labgraphic','text' => $_message,)
);
//recupera as 20 ultimas DM
//$result = $connection->get(
// 'direct_messages/sent',
// array()
// );
// lista os ultimos posts
// $result = $connection->get('statuses/user_timeline',array());
$msg .= "<p>Mensagem publicada no mural do Twitter</p>";
}
//echo "mensagem publicada:<br />$_message";
endif;
echo sprintf("<p>Arquivo %s\nenviado com sucesso para o servidor<p>$msg", $file);
}
catch(Exception $ex){
echo "Erro: " . $ex->getMessage();
}
}
?>
Com falei acima eu tenho todas as keys e o script acima funciona vez ou outra e não sei o motivo. É como se o twitter cacheasse o post e depois não me deixa postar outro mas o site autentica todas as vezes sem erro.
Se puder me mostrar uma forma simples para somente postar - eu não pretendo mostrar nada do twitter no site mas somente ter uma garantia de que foi publicado o link.
Resolvido: foi so trocar o bloco
>
// envia um post
$result = $connection->post('statuses/update',
array('status' => $_message,)
);
por
>
$result = $connection->post('direct_messages/new',
array(
'text' => 'dm text here',
'screen_name' => 'screen_name'
));
e o site ta postando direitinho todas as chamadas no meu twitter.
http://php.net/oauth
Amigo, não é necessário usar bibliotecas externas para integrar o ZF com o Twitter, ele já possui uma biblioteca interna para isso :seta: http://framework.zend.com/manual/en/zend.service.twitter.html
Eu já fiz integração de várias aplicações em ZF com o Twitter e não tive nenhum problema, basta seguir a documentação do manual.
Já com o Facebook eu ainda não integrei usando o ZF, mas acredito que não seja muito complicado seguindo a documentação e usando o Zend_Oauth e Zend_Rest.
Qualquer dúvida posta aí. /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif&key=f16394cbddc7140988e95da40d87cdc04e8fd18618efd400ded17391eb1801ce" alt="thumbsup.gif" />