0

我需要将 Twitter 与我的 Android 应用程序集成,这是我的代码(基于):

package com.anta40.oauthsetup;

import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.http.AccessToken;
import twitter4j.http.RequestToken;
import twitter4j.Status;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import java.util.List;

public class OAuthSetup extends Activity {
Twitter twitter;
RequestToken requestToken;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    String CONSUMER_KEY = "xxxxxxxxxx";
    String CONSUMER_SECRET = "yyyyyyyyyyyyyyyyyyyy";
    
    try {
        twitter = new TwitterFactory().getInstance();
        twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
        RequestToken requestToken = twitter.getOAuthRequestToken();
        AccessToken accessToken = null;
        String url = requestToken.getAuthorizationURL();
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        startActivity(intent);
    }
    catch (TwitterException e){
        e.printStackTrace();
    }
}

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    Uri uri = intent.getData();
    
    try {
        String verifier = uri.getQueryParameter("oauth_verifier");
        AccessToken accessToken = twitter.getOAuthAccessToken(requestToken, verifier);
        String token = accessToken.getToken();
        String secret = accessToken.getTokenSecret();
        displayTimeLine(token, secret);
    }
    catch (TwitterException e){
        e.printStackTrace();
    }
}

@SuppressWarnings("deprecation")
void displayTimeLine(String token, String secret) {
    if (null != token && null != secret) {
        List<Status> statuses = null;
        try {
            twitter.setOAuthAccessToken(token, secret);
            statuses = twitter.getFriendsTimeline();
            Toast.makeText(this, statuses.get(0).getText(), Toast.LENGTH_LONG)
                .show();
        } catch (Exception ex) {
            Toast.makeText(this, "Error:" + ex.getMessage(),
                    Toast.LENGTH_LONG).show();
            Log.d("Main.displayTimeline",""+ex.getMessage());
        }
        
    } else {
        Toast.makeText(this, "Not Verified", Toast.LENGTH_LONG).show();
    }
}

}

现在,我如何使用 Dialog 来输入 Twitter 用户名和密码,而不是使用 WebView?

4

2 回答 2

1

你不能。Twitter 现在只允许 3rd 方应用程序使用 oath 进行身份验证。

好吧,让我澄清一下,您可以放置​​一个对话框并让用户在那里输入用户名/密码,但是 twitter 不再为它提供任何 api。

您可以在此处找到有关该主题的更多信息:http: //dev.twitter.com/pages/oauth_faq

于 2011-01-05T03:32:57.597 回答
0

https://dev.twitter.com/docs/oauth/xauth - 看看这个功能,也许它会帮助你

于 2011-11-27T08:27:02.710 回答