7

私が開発している私のアプリは、公式の twitter アプリの新しい投稿画面を起動して、ユーザーがインテントに追加のテキストを追加してツイートを投稿できるようにします。これはうまく機能していますが、ユーザーが twitter アプリにログインしていないと、少し混乱します。アプリは起動しますが、ユーザーはサインインする必要があります。通常の Twitter 画面が表示されたら、戻るボタンを使用してアプリに戻ると、Twitter フィード画面に戻った後に新しい投稿画面が実際に表示されます。

インテントを実行する前に、ユーザーが実際に Twitter アプリにサインインしていることを確認する方法はありますか?

4

4 に答える 4

3

twitter4jlibを使用しています。ここでユーザー名を確認します。ユーザー名がnullの場合、サインインしているユーザーはありません。そうでない場合は、ユーザー名を取得します。このユーザー名は、共有設定で保存するアクセストークンで使用できます。

username = mySession.getUsername();

username =(username.equals( ""))?"ログインしていません":ユーザー名;

mySessionのコード:-

public class  MySession {
    private SharedPreferences sharedPref;
    private Editor editor;

    private static final String TWEET_AUTH_KEY = "auth_key";
    private static final String TWEET_AUTH_SECRET_KEY = "auth_secret_key";
    private static final String TWEET_USER_NAME = "user_name";
    private static final String SHARED = "Twitter_Preferences";

    public TwitterSession(Context context) {
        sharedPref = context.getSharedPreferences(SHARED, Context.MODE_PRIVATE);
        editor = sharedPref.edit();
    }

    public void storeAccessToken(AccessToken accessToken, String username) {
        editor.putString(TWEET_AUTH_KEY, accessToken.getToken());
        editor.putString(TWEET_AUTH_SECRET_KEY, accessToken.getTokenSecret());
        editor.putString(TWEET_USER_NAME, username);
        editor.commit();
    }

    public void resetAccessToken() {
        editor.putString(TWEET_AUTH_KEY, null);
        editor.putString(TWEET_AUTH_SECRET_KEY, null);
        editor.putString(TWEET_USER_NAME, null);

        editor.commit();
    }

    public String getUsername() {
        return sharedPref.getString(TWEET_USER_NAME, "");
    }

    public AccessToken getAccessToken() {
        String token = sharedPref.getString(TWEET_AUTH_KEY, null);
        String tokenSecret = sharedPref.getString(TWEET_AUTH_SECRET_KEY, null);

        if (token != null && tokenSecret != null)
            return new AccessToken(token, tokenSecret);
        else
            return null;
    }
}

これがお役に立てば幸いです。

于 2012-10-31T12:03:45.707 に答える
3

これは Twitter アプリの内部の問題であり、テストすることはできません。

一方、この問題についてユーザーに警告するダイアログを提供して、「このダイアログをもう表示しない」チェックボックスを使用すると、ユーザーはアドバイスを受け、ダイアログを永久に閉じることができます。このダイアログで、Twitter アプリ内で認証するための指示を提供することもできます。

于 2012-10-31T09:30:38.053 に答える
0

これらの行を ur アクティビティの oncreate() に追加するだけです

final Session activeSession = Twitter.getInstance().core.getSessionManager().getActiveSession();

if (activeSession != null){
           //do someting
        }
于 2016-08-26T04:41:38.150 に答える
0

true または false を返すこの関数を試してください。

True : ログインしている
False : ログインしていない

twitter.getAuthorization()ログインしていない場合、関数はエラーをスローします。これを処理することで、ユーザーが以前にログインしているかどうかを確認できます。

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);


      try {
      twitter.getAuthorization();
      return true;
      } catch (Exception e) {
      return false;
      }
}
于 2012-03-01T10:53:42.477 に答える