Убедитесь, что приложение Twitter вошло в Android - PullRequest
7 голосов
/ 01 марта 2012

Мое приложение, которое я разрабатываю, запускает новый экран официального сообщения в приложении Твиттер, чтобы пользователь мог опубликовать твит, добавив в него дополнительный текст.У меня это работает хорошо, однако все становится немного запутанным, если пользователь не вошел в систему с помощью приложения Twitter.Приложение запускается, но пользователь должен войти в систему после того, как он сделал, что появляется нормальный экран Twitter, если они используют кнопку «Назад», чтобы вернуться в мое приложение, новый экран сообщений действительно появляется после возврата на экран канала Twitter.

Можно ли как-нибудь проверить, действительно ли пользователь вошел в приложение Twitter, прежде чем пытаться выполнить намерение?

Ответы [ 4 ]

3 голосов
/ 31 октября 2012

Я думаю, что это внутренняя проблема приложения Twitter, и вы не можете проверить ее.

С другой стороны, вы можете предоставить диалоговое окно, предупреждающее пользователя об этом, с помощью флажка «Больше не показывать это диалоговое окно», чтобы он получил совет и мог навсегда закрыть диалог. В этом диалоговом окне вы даже можете предоставить инструкции для аутентификации внутри приложения Twitter.

3 голосов
/ 31 октября 2012

Я пользуюсь twitter4j lib. Здесь я проверяю имя пользователя. Если имя пользователя равно 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;
    }
}

Надеюсь, это поможет вам.

0 голосов
/ 26 августа 2016

просто добавьте эти строки в oncreate () в вашей активности

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

if (activeSession != null){
           //do someting
        }
0 голосов
/ 01 марта 2012

Попробуйте эту функцию, которая, в свою очередь, вернет вам значение 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;
      }
}
...