2015-03-20 11 views
11

Ho seguito le istruzioni utilizzando Fabric per implementare il mio accesso nella mia app personalizzata.Fabric Accedi con il pulsante twitter è disattivato

Il problema è che quando eseguo la mia app il pulsante è disattivato.

Qui ci sono gli errori sul mio stack trace:

03-20 11:06:32.456 6509-6509/com.jan.simplesharing E/Twitter﹕ Must Initialize Fabric before using singleton() 

03-20 11:06:32.546 6509-6509/com.jan.simplesharing E/IMGSRV﹕ :0: PVRDRMOpen: TP3, ret = 46 
03-20 11:06:32.556 6509-6509/com.jan.simplesharing E/IMGSRV﹕ :0: PVRDRMOpen: TP3, ret = 49 
03-20 11:06:32.556 6509-6509/com.jan.simplesharing E/IMGSRV﹕ :0: PVRDRMOpen: TP3, ret = 50 
03-20 11:06:32.556 6509-6509/com.jan.simplesharing E/IMGSRV﹕ :0: PVRDRMOpen: TP3, ret = 50 
03-20 11:06:32.556 6509-6509/com.jan.simplesharing E/IMGSRV﹕ :0: PVRDRMOpen: TP3, ret = 50 
03-20 11:06:32.566 6509-6509/com.jan.simplesharing E/IMGSRV﹕ :0: PVRDRMOpen: TP3, ret = 52 

ma ho anche inizializzati tessuto nella mia attività.

Ecco un frammento:

import io.fabric.sdk.android.Fabric; 

import com.twitter.sdk.android.Twitter; 
import com.twitter.sdk.android.core.TwitterAuthConfig; 
import com.twitter.sdk.android.core.Callback; 
import com.twitter.sdk.android.core.Result; 
import com.twitter.sdk.android.core.TwitterException; 
import com.twitter.sdk.android.core.TwitterSession; 
import com.twitter.sdk.android.core.identity.TwitterLoginButton; 

public class MainActivity extends Activity { 

//copied key and secret from fabric 
private static final String TWITTER_KEY = "my key here"; 
private static final String TWITTER_SECRET = "my secret here"; 

private TwitterLoginButton loginButton; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    /* Twitter */ 
    TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET); 
    Fabric.with(this, new Twitter(authConfig)); 

    loginButton = (TwitterLoginButton) findViewById(R.id.twitter_login_button); 
    loginButton.setCallback(new Callback<TwitterSession>() { 
     @Override 
     public void success(Result<TwitterSession> result) { 
      // Do something with result, which provides a TwitterSession for making API calls 
     } 

     @Override 
     public void failure(TwitterException exception) { 
      // Do something on failure 
     } 
    }); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    /* Twitter */ 
    loginButton.onActivityResult(requestCode, resultCode, data); 
} 

risposta

16
setContentView(R.layout.activity_main); 

/* Twitter */ 
TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET); 
Fabric.with(this, new Twitter(authConfig)); 

si deve inizializzare Tessuto prima gonfiare il pulsante Twitter. Perché altrimenti, quando viene chiamato il costruttore di pulsanti Twitter, non sa come connettere l'API di Twitter. Questo è ciò che la descrizione dell'errore dice in poche parole.

6509-6509/com.jan.simplesharing E/Twitter﹕ Must Initialize Fabric before using singleton() 

In generale, è possibile inizializzare tessuto in classe Application. Questo è quello che fanno al loro campione app Vetrina: https://github.com/twitterdev/cannonball-android/blob/master/app/src/main/java/io/fabric/samples/cannonball/App.java#L98

+0

Che dire di usarlo da al riavvio Broadcast Receiver? Perché fino ad allora non avremo il contesto dell'applicazione per inizializzarlo. – CoDe

+1

Controllare la documentazione del ciclo di vita di Android. La classe dell'applicazione viene sempre creata prima di qualsiasi altra cosa. https://developer.android.com/reference/android/app/Application.html#onCreate() –

+0

aggiungi questa riga prima di setContentView 'TwitterAuthConfig authConfig = new TwitterAuthConfig (" KEY "," SECRET_KEY "); Fabric.with (questo, nuovo Twitter (authConfig)); setContentView (R.layout.activity_main); ' –

-1

hai avuto sostituito il TWITTER_KEY e TWITTER_SECRET con le chiavi della tua applicazione?


In caso contrario, è necessario registrarsi un'applicazione Twitter sul https://apps.twitter.com/ e utilizzare i tasti della piattaforma che fornisce. Inoltre, assicurati di seguire i passaggi del tutorial (https://dev.twitter.com/twitter-kit/android/configure) per la configurazione della tua app.

+0

Link non disponibili –

2

Seguire questi passaggi per ottenere Twitter login utilizzando Tessuto:

Creare una classe che estende la classe di applicazione e copiare il seguente codice in esso -

TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET); 
Fabric.with(this, new Twitter(authConfig)); 

Fabric.with() esegue la funzionalità di inizializzazione. non fanno dimenticare di menzionare questa classe di applicazione nel file manifest Android

<application 
    android:name="com.demoapp.BaseApp" 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:theme="@android:style/Theme.Black" > 
Problemi correlati