Mais um exemplo de uso da biblioteca ColdFusion para acesso ao Twitter, esta aplicação não será continuada, é um mero exemplo. Ficou tão boa que resolvi incrementar o layout.
A alteração não foi apenas no formato do código, agora estou disponibilizando duas versões.
Para servidores anteriores a CF9, houve uma alteração que permite controlar os hits.
E para CF9, com o novo formato de código para componentes.
O Projeto ColdFusion Twitter Lib - CFTwitterLib, está disponível também na ótima lista de Projetos Open Source mantida por Brian Rinaldi.
Obrigado, Brain, pela menção.
Com este método você pode recuperar mensagens de um usuário Twitter.
<cfparam name="userTwitter" default="">
<!--- senha do usuário twitter usado pelo sistema --->
<cfparam name="passTwitter" default="">
<!--- login do amigo twitter que desejamos recuperar as mensagens --->
<cfparam name="friendTwitter" default="">
<cfif Len(Trim(friendTwitter))>
<!--- Objeto usado nesta pagina --->
<cfset twitter = CreateObject('component','Twitter').init(userTwitter,passTwitter)>
<!--- inicio a variável que será passada como parâmetro --->
<cfset options = StructNew() >
<!--- login do amigo --->
<cfset options['screen_name'] = friendTwitter >
<!--- número de mensagens por pagina --->
<cfset options['count'] = 10 >
<!--- número da pagina --->
<cfset options['page'] = 1 >
<!--- recupero as mensagens --->
<cfset timeline = deserializeJSON(twitter.getUserTimeline(options).toString()) >
<!--- existem mensagens --->
<cfif IsArray(timeline)>
<cfoutput>
<!--- exibe cada mensagens do amigo --->
<cfloop from="1" to="#ArrayLen(timeline)#" index="i">
<div style="border:1px solid ##000; padding:5px; width:350px;">
<dl style="margin:0">
<dt style="margin:0">
<!--- se o amigo enviou a mensagem como resposta, recupera e exibe a mensagem original --->
<cfif timeline[i].in_reply_to_status_id neq "null">
<cfset currentMsg = deserializeJSON(twitter.getStatus(timeline[i].in_reply_to_status_id).toString())>
<div>
<img src="#currentMsg.user.profile_image_url#" height="20" />
<a name="message_#currentMsg.id#"></a>
<cfif currentMsg.favorited> <img src="images/cool.gif" /></cfif>
#DateFormat(currentMsg.created_at,'dd-mm-yyyy')# #timeFormat(currentMsg.created_at,'hh:mm:ss')#
-
#currentMsg.text#
</div>
</cfif></dt>
<dd style="margin:0; <cfif Len(Trim(timeline[i].in_reply_to_status_id))>margin-left:10px</cfif>"><img src="#timeline[i].user.profile_image_url#" height="20" />
<a name="message_#timeline[i].id#"></a>
<cfif timeline[i].favorited> <img src="images/cool.gif" /></cfif>
#DateFormat(timeline[i].created_at,'dd-mm-yyyy')# #timeFormat(timeline[i].created_at,'hh:mm:ss')#
-
#timeline[i].text#</dd>
</dl>
</div>
</cfloop>
</cfoutput>
<cfelse>
<!--- o limite de requestes por conta é de 100 --->
Rate limit exceeded.
</cfif>
</cfif>
public string getUserTimeline(struct options, [string format])
options = Estrutura de dados contendo as opções desejada, ao menos o id ou screen_name ou user_id deve ser passado.
options.id = identificador do usuário no Twitter (diferente do login)
options.user_id = identificador do usuário no Twitter (diferente do login)
options.screen_name = nome (login) de usuário no Twitter
options.since_id = identificador do usuário no Twitter (diferente do login)
options.page = número da pagina que deseja recuperar
options.count = número de itens que deseja recuperar por pagina
format (opcional, json é default) = xml, json, rss, atom
Com este metodo você pode adicionar amigos do Twitter para uma conta Twitter.
<cfparam name="friend" default="" />
<cfif Len(Trim(friend))>
<cfset twitter = createObject('component','Twitter').init(application.usertwitter,application.passtwitter) />
<!--- recupera uma conta twitter --->
<cfset friendAccount = DeserializeJSON(twitter.showUser(friend)) />
<!--- exibe informações do amigo que vai ser adicionado --->
<h1><cfoutput><img src="#friendAccount.profile_image_url#" /> #friendAccount.name# - #friend# (#friendAccount.followers_count#)</cfoutput> </h1>
<!--- verifica se a conta do futuro amigo é bloqueada --->
<cfif NOT friendAccount.protected>
<!--- verifica se já são amigos --->
<cfif NOT DeserializeJSON(twitter.friendshipExists(application.usertwitter,friend)) >
<!--- adiciona amigo --->
<cfset follow = DeserializeJSON(twitter.follow(friendAccount.id)) />
<b style="color:#090">it was added</b>
<cfelse>
<b style="color:#09F">it is already your friend</b>
</cfif>
<cfelse>
<b style="color:#F00">It is protected, for this reason it was not added</b>
</cfif>
</cfif>
public string follow(string id, [string format])
id = identificador do usuário no Twitter (diferente do login)
format (opcional, json é default) = xml, json
Agora sim, BlogCFC integrado ao Twitter.
Agora as postagens do BlogCFC enviam mensagens pelo Twitter, isso é feito na pagina que adiciona entradas no BlogCFC.
Com CFTwitterLib o BlogCFC pode interagir mais com Twitter, porém, vou deixar apenas nisso (enviar post ao twitter).
E aproveito para compartilhar com vocês como fiz isso.
Antes de iniciar você deve decidir como você vai informar sua credencial no blog.ini.cfm, eu escolhi em gerar a credencial separadamente com a função toBase64 e pegar o resultado e colocar no arquivo ini, da seguinte forma:
A biblioteca ColdFusion para acessar o Twitter, cftwitterlib, já está na versão 3, com todos os bugs corrigidos (espero que sim).
O projeto foi adicionado ao RiaForge http://cftwitterlib.riaforge.org/.
<cfset xmlString = twitter.updateStatus('Mensagem para seu amigo','amigoID','xml') />
<cfset xmlString = twitter.updateStatus('Mensagem','','xml') />
<cfdump var="#variables#">
Estou disponibilizando uma biblioteca para acesso a Twitter, cftwitterlib - ColdFusion Twitter Lib.
Com ela é possivel manipular as informações de uma conta no Twitter
A documentação não está completa, mas não haverá dificuldade no uso, quem estiver disposto deixar modos de uso, o wiki está disponivel.
<cfset xmlString = twitter.getFriendsTimeline(format='xml') />
<cfset jsonJava = twitter.getFriendsTimeline() />
<cfset jsonString = twitter.getFriendsTimeline().toString() />
<cfset htmlString = twitter.getFriendsTimeline(format='html') />
<cfdump var="#variables#" />








