2012-03-01 12 views
7

La mia app che sto sviluppando avvia l'app ufficiale di Twitter nuova schermata di post in modo che l'utente possa pubblicare un tweet con un testo aggiuntivo aggiunto nell'intento. Ho funzionato bene, tuttavia le cose si confondono un po 'se l'utente non ha effettuato il login con l'app di Twitter. L'app si avvia ma l'utente deve effettuare l'accesso, una volta che è stata visualizzata la normale schermata di twitter, se utilizza il pulsante Indietro per tornare alla mia app, la nuova schermata viene effettivamente visualizzata dopo essere tornata sulla schermata del feed di Twitter.Verifica che l'app di Twitter abbia effettuato l'accesso su Android

C'è un modo per verificare che un utente sia effettivamente collegato all'app di Twitter prima di provare a eseguire l'intento?

+2

credo che sia un bug in app Twitter. La nuova schermata post dovrebbe apparire dopo il login riuscito (basato sull'intenzione iniziale ricevuta). –

risposta

0

Prova questa funzione che a sua volta ti restituisce vero o falso.

Vero: Collegato
False: Non sei loggato

twitter.getAuthorization() funzione può buttare un errore se non è connesso per la manipolazione di questo si riesce a trovare se l'utente è già loggato o meno .

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; 
     } 
} 
+0

La domanda afferma chiaramente che apre l'app ufficiale. Non usa l'API di twitter. – Phil

3

Penso che sia un problema interno di app di Twitter e non è possibile testarlo.

D'altra parte è possibile fornire una finestra di dialogo che avvisa l'utente di questa questione con una casella di controllo "Non mostrare più questa finestra di dialogo" in modo che venga avvisata e possa dimiss per sempre la finestra di dialogo. In questa finestra di dialogo è anche possibile fornire istruzioni per l'autenticazione all'interno dell'app di Twitter.

3

Sto usando twitter4j lib. Qui controllo il nome utente. Se il nome utente è nullo, non vi è alcun utente connesso, altrimenti ho il nome utente. Questo nome utente è disponibile nel token di accesso che memorizzo nelle preferenze condivise.

nomeutente = mySession.getUsername();

username = (nomeutente.equals (""))? "Non connesso": nome utente; codice

per 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; 
    } 
} 

Spero che questo vi aiuterà.

0

Basta aggiungere queste linee nel OnCreate() in ur attività

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

if (activeSession != null){ 
      //do someting 
     } 
Problemi correlati