1

私が欲しいものを明確にしてみましょう。ボタンがあり、ボタンをクリックすると、デバイスにアクティブな Twitter セッションがあるかどうか、またはデバイスで Twitter アカウントにログインしているかどうかを検出したいと考えています。接続されている場合は、Twitter アカウントを使用し、何らかの形でセッションをアプリケーションに保存し、再度ログインすることなくアプリケーションで Twitter 経由で何かを共有したいときに使用します。

私が見つけたほとんどの例は、アプリケーション自体からのツイートです。たとえば、このhttp://www.androidhive.info/2012/09/android-twitter-oauth-connect-tutorial/

Twitter アカウントに接続している場合は、それをアプリで使用し、Share Intent を呼び出すときにそれらを使用したいだけです。

4

2 に答える 2

0

このデフォルト値の設定を取得する

this.prefs = PreferenceManager.getDefaultSharedPreferences(this);

そして、この値の助けを借りて、以下に書かれているisAuthenticatedメソッドを使用して認証を確認してください

if (TwitterUtils.isAuthenticated(prefs)) {

                    sendTweet();
                } else {
                    Intent i = new Intent(getApplicationContext(), PrepareRequestTokenActivity.class);
                       startActivity(i);
                }
public static boolean isAuthenticated(SharedPreferences prefs) {

    String token = prefs.getString(OAuth.OAUTH_TOKEN, "");
    String secret = prefs.getString(OAuth.OAUTH_TOKEN_SECRET, "");

    AccessToken a = new AccessToken(token,secret);
    Twitter twitter = new TwitterFactory().getInstance();
    twitter.setOAuthConsumer(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET);
    twitter.setOAuthAccessToken(a);

    try {
        twitter.getAccountSettings();
        return true;
    } catch (TwitterException e) {
        return false;
    }
}
于 2012-11-28T09:12:26.853 に答える
0

このメソッドは TwitterApp.java (twitter4j) にあります。

public boolean isAuthenticated() {    
        try {
            AccessToken a = mSession.getAccessToken();
            mTwitter = new TwitterFactory().getInstance();
            mTwitter.setOAuthConsumer(Constants.CONSUMER_KEY,
                    Constants.CONSUMER_SECRET);
            mTwitter.setOAuthAccessToken(a);    

            try {
                mTwitter.getAccountSettings();
                return true;
            } catch (TwitterException e) {
                return false;
            }
        } catch (Exception e) {

            e.printStackTrace();
            return false;
        }
    }
于 2012-11-28T09:10:41.280 に答える