Простой пример JTwitter для Android - PullRequest
3 голосов
/ 08 июля 2010

Я пробовал много разных способов и искал по всему интернету, чтобы найти учебник по использованию JTwitter с OAuth. Вот следующий шаг, который я выполнил

Скачать Jtwitter и Signpost Добавьте их как Jars в Java Builder

Создана простая кнопка для запуска

public class ShareGenerator extends Activity {

    private static final String JTWITTER_OAUTH_KEY = "this_is_populated";
    private static final String JTWITTER_OAUTH_SECRET = "this_is_populated";

    Button menupopButton;

     @Override
        public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
  setContentView(R.layout.share);
  this.setContentView(R.layout.share);
  this.txShare = (TextView)this.findViewById(R.id.lblshare);
  this.menupopButton = (Button)this.findViewById(R.id.menupop);


  menupopButton.setOnClickListener(new View.OnClickListener()
  { 
      public void onClick(View v) 

      {
          TwitterSend();

      } 
 }); 

     }

и у меня есть класс

public void TwitterSend () {

                 OAuthSignpostClient client = new OAuthSignpostClient(JTWITTER_OAUTH_KEY, JTWITTER_OAUTH_SECRET, "oob");
                    Twitter jtwit = new Twitter("bob", client);
                    // open the authorisation page in the user's browser
                    client.authorizeDesktop();
                    // get the pin
                    String v = client.askUser("Please enter the verification PIN from Twitter");
                    client.setAuthorizationCode(v);
                    // Optional: store the authorisation token details
                    Object accessToken = client.getAccessToken();
                    // use the API!
                    jtwit.setStatus("Messing about in Java");

             }

Однако я даже не могу открыть экран OAuth. Это терпит крах, когда это добирается там. Может кто-нибудь помочь мне хотя бы увидеть экран OAuth? У меня правильно настроен импорт.

Ответы [ 3 ]

3 голосов
/ 09 июля 2010

Проблема в этой строке, которая использует java.awt.Desktop:

// open the authorisation page in the user's browser
client.authorizeDesktop();

Это будет работать на настольном ПК, но не на Android.

Вместо этого возьмите URL-адрес из client.authorizeUrl(); и отправьте туда пользователя. Например. с чем-то вроде этого:

URI url = client.authorizeUrl();
Intent myIntent = new Intent(Intent.VIEW_ACTION);
myIntent.setData(url);
startActivity(myIntent);

Но я не Android-кодер! Вы почти наверняка можете добиться большего, используя обратный вызов вместо oob. Надеюсь, кто-то другой может предоставить код для этого ...

1 голос
/ 19 октября 2011

Даниэль обеспечивает довольно хорошую отправную точку. Вот как я реализовал это в своем приложении для Android:

    OAuthSignpostClient authClient = new OAuthSignpostClient('apiKey','apiSecret','callbackUrl');

                java.net.URI jUrl = authClient.authorizeUrl();
                Uri.Builder uriBuilder = new Uri.Builder();
                uriBuilder.encodedPath(jUrl.toString());

                Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(jUrl.toString()));
                startActivity(myIntent);

конечно, я использовал 'apiKey' и так далее для краткости. Вам нужно будет использовать свой собственный ключ, секретный и обратный URL в конструкторе OAuthSignpostClient.

Примечание: вам необходимо преобразовать Java.net.URI, предоставленный JTwitter, в Android.net.Uri, чтобы использовать его для начала нового намерения.

После этого вам потребуется использовать фильтр намерений, чтобы перехватить URL-адрес обратного вызова и сделать что-то с токеном пользователя и секретом, которые вы получите из API Twitter.

0 голосов
/ 17 ноября 2010

см. Этот пост [Проверьте историю изменений, если вам все равно]

...