Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

xikoo

XML OAuth Twitter

Recommended Posts

Fala galera, quanto tempo!

 

Seguinte, tenho uma página que lê, colocando o login e senha do twitter, um xml com as mentions que fizeram do usuário.

 

Só que o twitter desativou hoje(exatamente um dia após o projeto ser aprovado) o Basic Authentication e está implementando o OAuth, Open Authentication. Assim você não precisa passar o login e senha para as API's que gostaria de usar, tem um sistema de token que eu entendi +/-

 

Segundo https://twitter.com/themattharris um dos que desenvolveram essa api que captura os mentions, eles já desativaram o Basic Auth e o OAuth já tá rolando.

 

O problema é como me "logar" na página com esse novo sistema de OAuth para continuar capturando os dados do XML

 

Nessa página tem alguns exemplos, mas em outras linguagens que não sou muito familiarizado ainda:

 

https://apiwiki.twitter.com/OAuth-Examples

 

Como fazer esse OAuth em ASP?

 

Abaixo segue um exemplo de código de como era feito com o Basic Authentication

 

Abraços!

 

<%
twitter_usuario = "usuario"
twitter_senha = "senha"

xml = "http://" & twitter_usuario & ":" & twitter_senha & "@api.twitter.com/1/statuses/mentions.xml"
	
Set objSrvHTTP = Server.CreateObject("MSXML2.XMLHTTP.3.0")
objSrvHTTP.open "GET", xml, false
objSrvHTTP.setRequestHeader "Content-Type", "text/xml"
objSrvHTTP.Send()
strXML = objSrvHTTP.ResponseXML.xml
	
Set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.async = false
objXML.loadXML(strXML)

Set raizxml = objXML.documentElement

response.write raizxml.childNodes(0).text
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu vi esse exemplo, mas aonde pego os valores desses parâmetros pro meu exemplo?

 

Não consegui liberar o acesso dessa página à minha conta como diz em:

 

http://support.twitter.com/articles/76052-how-to-connect-to-third-party-applications

 

Dim objOAuth : Set objOAuth = New cLibOAuth
	objOAuth.ConsumerKey = OAUTH_EXAMPLE_CONSUMER_KEY
	objOAuth.ConsumerSecret = OAUTH_EXAMPLE_CONSUMER_SECRET
	objOAuth.EndPoint = TWITTER_OAUTH_URL_REQUEST_TOKEN
	objOAuth.RequestMethod = OAUTH_REQUEST_METHOD_GET
	objOAuth.TimeoutURL = OAUTH_EXAMPLE_TIMEOUT_URL

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso não posso te ajudar ainda pois ainda não testei essa classe, vou ver se ainda hoje consigo fazer uns testes aqui.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este link, pode te ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei de tudo enão consegui nada...

 

Onde tem que mudar as configurações?

 

Puis consumer key, secret... e nada...

 

Alguem da um help?

Qual amaneira mais facil de se acessar a api e postar por ela? Por ASP ou PHP?

Tentei das 2 maneiras e sempre da algum erro...

 

HELP-ME!

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu consegui alguns avanços usando o exemplo do vbscript

 

com a sua conta do twitter tem que acessar http://twitter.com/apps/new e registrar uma aplicação "qualquer"

 

o twitter te fornece uma Consumer key e Consumer secret

 

Assim na página _config.asp dentro do diretório twitter, é só substituir os parâmetros e atribuir esse valor a variável

 

Const OAUTH_EXAMPLE_CALLBACK_URL		= "http://api.twitter.com/1/statuses/mentions.xml"

Mas ainda não consegui acessar porque o basic authentication ta vindo antes do oauth

 

ou seja, pra acessar essa página você tem que inserir login e senha, mas o twitter nao aceita mais autenticação por login e senha, assim sendo tem que arranjar um jeito do oauth vir antes do basic, ou então tem alguma coisa faltando...

 

quando acesso a página do callback ele passa como parâmetro uma oauth_token e oauth_verifier, andei um pouco mas ainda não cheguei lá

Compartilhar este post


Link para o post
Compartilhar em outros sites

Velho, fiz o teste aqui e foi tudo belezinha, uma pergunta, você esta testando esse code em 127.0.0.1 ou localhost? estou perguntando isso pois não será aceito localhost você terá que testar em 127.0.0.1 localmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este utiliza o método antigo, por isso nem por reza braba dará certo.

 

A Classe que eu passei, funciona perfeitamente, basta seguir os passos corretamente listados na própria página, fiz os testes aqui e funcionou tudo perfeitamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Patrique, eu tentei e comigo não funcionou. Talvez se setar o parametro Const OAUTH_EXAMPLE_CALLBACK_URL da forma que Xiqoo falou. Outra coisa, com essa classe você consegue acessar o twiiter sem precisar fazer login? Preciso que funcione sem login pois quero que meu blog poste automaticamente no twitter toda mensagem nova.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu disse, estou testando localhost, com isso na hora que apontei as urls no twitter app eu coloquei como 127.0.0.1 portanto minha const desta variavel ficou assim lá no config, portanto não se pode utilizar localhost, tem que mandar o ip direto nesse caso.

 

Const OAUTH_EXAMPLE_CALLBACK_URL = "http://127.0.0.1/conect/twitter/callback.asp"

Em relação a mandar sem login uma mensagem ao twitter é impossível, de qualquer forma tem que mandar o login na parada.

 

Para o seu caso eu indico esta class

 

http://forum.imasters.com.br/index.php?/topic/390947-twitter-biblioteca-2/

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em relação a mandar sem login uma mensagem ao twitter é impossível...

 

Para o seu caso eu indico esta class

 

http://forum.imaster...r-biblioteca-2/

 

 

O que quiz dizer é não precisar fazer login preenchendo o formulario, mas acessar a conta com senha e user armazenados na pagina como no acessos que eram feitos sem oAuth. Assim o acesso e a atualização do status são feito de forma instantanea. Essa sua classe não usa oAuth, somente senha e username, correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, desisti da solução via ASP, mas não por causa do código, muito provavelmente por causa do servidor.

 

Adotei uma solução em PHP em um servidor meu pessoal, ele lê a página que responde em formato json, eu formato num arquivo XML do jeito que quero e uso uma página ASP aqui do trabalho para lê-lo e inserir no bd.

 

Utilizei a mesma solução em PHP no servidor daqui e não rolou, o que devia tá me "breckando" era configuração do servidor e principalmente do firewall que é restritíssima.

 

Obrigado a todos que ajudaram!

 

Uma coisa importante é que uma vez gerado o token após logado você pode usar esse token permanentemente, ele não expira

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola Patrique!

estou tentando fazer esse script funcionar em um site na empresa onde trabalho. Segui os passos (1º registrei o aplicativo no twitter, 2° peguei o consumerkey e ConsumerSecret e coloquei nas variaveis "CKey" e "CSecret", 3º baixei as pastas no site http://scottdesapio.com/VBScriptOAuth/) e joguei na pagina o seguinte codigo:

 

Dim objOAuth : Set objOAuth = New cLibOAuth
objOAuth.ConsumerKey = CKey
objOAuth.ConsumerSecret = CSecret
objOAuth.EndPoint = TWITTER_OAUTH_URL_UPDATE_STATUS
objOAuth.RequestMethod = OAUTH_REQUEST_METHOD_POST
	
objOAuth.Parameters.Add "status", strStatus
	
objOAuth.Send()
	
response.Write(objOAuth.ResponseText)
response.End()

No meu caso, desejo fazer uma aplicação que posta titulo da noticia cadastrada no twitter da empresa. Quando vou testar no ar apresenta o resultado "error":"Could not authenticate you." no objOAuth.ResponseText. anteriormante tive que modificar uma rotina no arquivo clibOauth.until.asp:

Private Sub Set_OffsetMinutes()
'Dim objWshShell : Set objWshShell = Server.CreateObject("WScript.Shell")
'm_intOffsetMinutes = objWshShell.RegRead("HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation\ActiveTimeBias")
'Set objWshShell = Nothing
m_intOffsetMinutes = minute(now)
End Sub

parece que esse objeto ele não tem no host onde o site eh hospedado. se poder me da uma ajuda. vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Dariel

 

Passei pelo mesmo problema que você

 

Meu provedor também não tem este componente instalado. Para resolver fiz o seguinte:

 

No arquivo cLibOAuth.Utils.asp, substitui esta função:

        Private Sub Set_OffsetMinutes()
            Dim objWshShell : Set objWshShell = Server.CreateObject("WScript.Shell")
            m_intOffsetMinutes = objWshShell.RegRead("HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation\ActiveTimeBias")
            Set objWshShell = Nothing
        End Sub

Por isso:

 

        Private Sub Set_OffsetMinutes()
            m_intOffsetMinutes = 180
        End Sub

No regedit este caminho HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation\ActiveTimeBias me retorna o valor binário B4 = 180

Esta key contém o horário atual, se for igual ao Bias (b4 00 00 00 = 180 minutos) é porque o Horário de Verão está desligado, se for igual à soma de Bias + DaylightBias (b4 00 00 00 + c4 ff ff ff = 78 00 00 00 = 120 minutos) é porque estamos no verão.

 

Mesmo assim, não tive sucesso, quando faço o login e vou tentar enviar um teste aparece um alert():

 

Oops! As error has occurred.

Please refresh the page and try again.

Se tiver algum progresso poste p/ gente.

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me parece que é problema no server, pois o xikoo teve o mesmo problema, no meu caso funcionou sem problemas.

 

Siga as instruções do rog.cesar e veja se irá funfar

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

vlw rog.cesar! ajudou mt cara!

ainda to com o problema de fazer funcionar o Status Update funcionar, apesar de seguir todos os pasos do site e fazer a função como postei acima. Se poderem, postem ai um exemplo de vcs q funcionou, please!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.