Saltar para conteúdo


Foto
- - - - -

Post Facebook/Twitter


  • Por favor inicie sessão para responder
8 respostas a este tópico

#1 Tsubas

Tsubas

    Membro

  • Membros
  • PipPip
  • 10 mensagens

Mensagem publicada 18 September 2010 - 18:03

Boas,Alguém já tentou fazer uma aplicação para Android que servisse para fazer post(basicamente actualizar o estado) no Facebook e Twitter???Tou com uns problemas em fazê-lo, para o twitter usei a biblioteca twitter4j, mas não consigo fazer que funcione no Android, mas em aplicações java funciona :( Quanto ao Facebook usei a fbRocket e consigo logar no face mas não me faz o post... Para além disso só corre a 1ª vez, depois já dá erro.Se alguém puder dar uma ajudinha :)

#2 r3pek

r3pek

    Guru de Android

  • Former Staff
  • PipPipPipPipPip
  • 1560 mensagens
  • LocalizaçãoBA4 - Terceira - Açores
  • Nexus One + Motorola XOOM

Mensagem publicada 18 September 2010 - 19:26

Tsubas escreveu:

Boas,Alguém já tentou fazer uma aplicação para Android que servisse para fazer post(basicamente actualizar o estado) no Facebook e Twitter???Tou com uns problemas em fazê-lo, para o twitter usei a biblioteca twitter4j, mas não consigo fazer que funcione no Android, mas em aplicações java funciona :( Quanto ao Facebook usei a fbRocket e consigo logar no face mas não me faz o post... Para além disso só corre a 1ª vez, depois já dá erro.Se alguém puder dar uma ajudinha :)

Que eu saiba ainda ninguém usou nenhuma dessas bibliotecas (dos programadores que passam no forum).Mas se fores um pouco mais concreto nos problemas que tás a ter (erros etc) talvez dê para ajudar.

#3 Tsubas

Tsubas

    Membro

  • Membros
  • PipPip
  • 10 mensagens

Mensagem publicada 19 September 2010 - 11:44

No facebook consigo fazer login na 1ª vez, mas não consigo actualizar o statusNo twitter não consigo fazer login sequer.Então quais são as bibliotecas que usaram??? Se é que já alguém usou, pois não encontrei nada no fórum sobre isto.

#4 gSpot

gSpot

    Membro

  • Membros
  • PipPip
  • 43 mensagens

Mensagem publicada 25 September 2010 - 11:14

Boas Tsubas.Já deste uma olhadela aqui http://github.com/fa...ook-android-sdk ?Cumprimentos,gSpot

#5 Tsubas

Tsubas

    Membro

  • Membros
  • PipPip
  • 10 mensagens

Mensagem publicada 16 December 2010 - 16:37

Obrigado gSpot, para o facebook problema resolvido ;) Agora continuo sem encontrar alguma biblioteca para o twitter, se alguém já usou algo e funcionou, agradecia a ajuda :)

#6 Tsubas

Tsubas

    Membro

  • Membros
  • PipPip
  • 10 mensagens

Mensagem publicada 13 January 2011 - 14:15

Já consegui arranjar maneira de fazer tweet no twitter, mas agora tou com um problema que é mais cromice minha http://www.androidpt...tyle_emoticons/AndroidSmall/emo_im_tongue_sticking_out.png Então é assim é quero que ao carregar no botão de update seja tweetado o que escrevi, mas não tou a atinar(acho que tem a ver com os overrides, que não percebo bem), pk se meter uma msg predefinida na função onNewIntent, e na onCreate mandar logo executar o doOauth() em vez de esperar o click do botão ele funciona, logo é só mesmo um problema de encadeamento, se alguém puder ajudar ;)Aqui fica o código para poderem analisar e também para alguém usar caso precise ;) package com.twitter;import oauth.signpost.OAuthProvider;import oauth.signpost.basic.DefaultOAuthProvider;import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer;import twitter4j.Twitter;import twitter4j.TwitterFactory;import twitter4j.http.AccessToken;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class twitter extends Activity implements OnClickListener{ private CommonsHttpOAuthConsumer httpOauthConsumer; private OAuthProvider httpOauthprovider; public final static String consumerKey = "ZCL2EoRWJBO6gjQTuguWwQ"; public final static String consumerSecret = "BJpyut8ss0OF9n71mmGLObRDbPAyRSaFEKq9aoBhz8"; private final String CALLBACKURL = "myapp://mainactivity"; Twitter twitter; Button buttonUpdate; EditText textStatus; @Override /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // find views by id buttonUpdate = (Button) findViewById(R.id.btnUpdate); textStatus = (EditText) findViewById(R.id.txtStatus); // Add listener buttonUpdate.setOnClickListener(this); } private void doOauth() { try { httpOauthConsumer = new CommonsHttpOAuthConsumer(consumerKey, consumerSecret); httpOauthprovider = new DefaultOAuthProvider( "http://twitter.com/oauth/request_token", "http://twitter.com/oauth/access_token", "http://twitter.com/oauth/authorize"); httpOauthprovider.setOAuth10a(true); String authUrl = httpOauthprovider.retrieveRequestToken(httpOauthConsumer, CALLBACKURL); this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); } catch (Exception e) { Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); } } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); Uri uri = intent.getData(); if (uri != null && uri.toString().startsWith(CALLBACKURL)) { String verifier = uri.getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER); try { // this will populate token and token_secret in consumer httpOauthprovider.retrieveAccessToken(httpOauthConsumer, verifier); // TODO: you might want to store token and token_secret in you app settings!!!!!!!! AccessToken a = new AccessToken(httpOauthConsumer.getToken(), httpOauthConsumer.getTokenSecret()); // initialize Twitter4J twitter = new TwitterFactory().getInstance(); twitter.setOAuthConsumer(consumerKey, consumerSecret); twitter.setOAuthAccessToken(a); // create a tweet String status = textStatus.getText().toString(); // send the tweet twitter.updateStatus(status); } catch (Exception e) { Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); } } } public void onClick(View v) { doOauth(); }}

#7 pedronveloso

pedronveloso

    Veloso

  • Administradores
  • 1578 mensagens
  • S8

Mensagem publicada 13 January 2011 - 19:40

Claro que te falta o @Override no public void onClick(View v) {doOauth();}senão esse método não está a substituir o método de onClick de teres implementado o OnClickListener, é apenas um método solto com o mesmo nome.

#8 Tsubas

Tsubas

    Membro

  • Membros
  • PipPip
  • 10 mensagens

Mensagem publicada 15 January 2011 - 15:02

Mas metendo o @Override lá, dá erro e pede para tirar de lá o @Override, será por já ter a função onNewIntent com o @Override???

#9 gSpot

gSpot

    Membro

  • Membros
  • PipPip
  • 43 mensagens

Mensagem publicada 17 January 2011 - 09:06

Boas.Por defeito, mesmo que nao tenhas o @Override, se a funçao existir na classe que estás a implementar entao essa funçao irá, de facto, ser overriden pela funçao com o mesmo esqueleto. O problema nao será esse. O método doOauth() só por si nao envia mensagem nenhuma para o twitter, apenas inicia o processo de autenticaçao, através do browser do Android, presumo - this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));O flow para enviar mensagem para o twitter deve ser o seguinte:1) autenticaçao2) receber token de acesso3) enviar mensagemPela análise do código o que estás a fazer é enviar mensagem para o twitter em onNewIntent(...), pelo que nao é quando o botao é pressionado. Quando o botao é pressionado apenas estás a iniciar a autenticaçao no twitter.Flow no momento:1) app é iniciada2) botao é clicado a) autenticaçao é iniciada no twitter através do browser3) autenticaçao no twitter é finalizada a) a app volta ao foreground, chamada pelo browser, pois é a app que consome URIs do tipo myapp (presumo que no manifest isso esteja configurado!) b) onNewIntent(...) é chamado quando a app volta ao foreground (aqui talvez seja melhor modificar para onActivityResult(...) e modificar a iniciaçao do browser no ponto 2a para startActivityForResult(...)). Neste passo vais buscar o accessToken e envias uma mensagem.Por isso se quiseres que o user envie uma mensagem quando carregas no botao entao tens de alterarpublic void onClick(View v) { doOauth();}parapublic void onClick(View v) { String status = textStatus.getText().toString(); // send the tweet twitter.updateStatus(status);}claro que tens de ter o accessToken para que funcione.Podes experimentar colocar o doOauth() em onCreate(...) depois de buttonUpdate.setOnClickListener(this);, o que significa que assim que iniciares a aplicaçao automaticamente seras redireccionado para o browser para fazer a autenticaçao no twitter, mas depois de voltares e de teres um token de acesso valido, sempre que clicares no botao entao será feito o envido da mensagem para o twitter.Espero ter ajudado.Cumprimentos,gSpot