2014-10-29 10 views
12

Próbuję użyć nowego interfejsu Fabric API udostępnionego przez serwis Twitter, aby umożliwić użytkownikom logowanie się do mojej aplikacji. Śledziłem dokładnie samouczek (przynajmniej myślę, że mam, być może popełniłem błędy) here po skonfigurowaniu mojego projektu we wszystkich niezbędnych krokach; Teraz, kiedy nacisnąć przycisk logowania i uwierzytelniania przycisk oddaje udaną odpowiedź, ale kiedy idę, aby uzyskać Twitter Sesja potem uzyskać wyjątek, który wygląda jakLogowanie przez sieć Twitter Fabric dla Androida

Caused by: java.lang.IllegalStateException: Must start Twitter Kit with Fabric.with() first  

(znowu, ja po samouczek do A Do tego momentu, ale jeśli możesz wymyślić cokolwiek, to byłbym skłonny go wypróbować)

+0

Checkout następujący link: https://androidbeasts.wordpress.com/2015/07/22/twitter-fabric-integration/ – Aakash

Odpowiedz

14

Zestaw Fabric SDK oddziela funkcjonalność od modułów o nazwie Zestawy. Musisz wskazać, które zestawy chcesz użyć przez Fabric.with(). Zwykle odbywa się to poprzez rozszerzenie klasy aplikacji Android.

package com.example.app; 
import android.app.Application; 

public class MyApplication extends Application { 
    @Override 
    public void onCreate() { 
     super.onCreate(); 

     TwitterAuthConfig authConfig = 
        new TwitterAuthConfig("consumerKey", 
             "consumerSecret"); 

     Fabric.with(this, new Twitter(authConfig)); 

     // Example: multiple kits 
     // Fabric.with(this, new Twitter(authConfig), 
     //     new Crashlytics()); 
    } 
} 

Więcej informacji: https://dev.twitter.com/twitter-kit/android/integrate

Zobacz kanoniczną przykładową aplikację pod adresem: https://github.com/twitterdev/cannonball-android

+0

Gotowy, dziękuję bardzo! –

+0

Witam Luis, czy możesz mi pomóc z moim pytaniem [tutaj] (http://stackoverflow.com/questions/27190313/making-rest-api-calls-from-an-android-app-using-twitterapiclient-class) ... dzięki z góry –

+0

Wielkie dzięki! Korzystałem z integracji Android Studio auto Fabric i całkowicie przegapiłem tę małą ciekawość kodu. Musiałem zmienić klucz API i tajny klucz dla klienta i nie miałem pojęcia, gdzie go znaleźć. – LukeWaggoner

2

Najnowsze Twitter Integracja z Android Studio

Ten link poniżej podać przykładowy kod można użyć tego kod do integracji najnowszego sdk (Fabric). to zapewnić wszystkich funkcji możemy łatwo zintegrować mniej czasu podjęcia

Twitter Sample code

Reference Code Plz check it

+1

Witam, Mam problemy z korzystaniem z zestawu do logowania do serwisu Twitter serwisu Fabric. Z wtyczki Android Studio Farbic, na ekranie wyboru zestawu do zainstalowania, opcja "Nieznany" zamiast "Instaluj". Czy ktoś jeszcze napotkał ten problem? Muszę nadmienić, że w przypadku projektu od zera tak się nie dzieje. –

4

Mój przypadek jest błąd: Musi zacząć Fabric.with() przed wywołaniem Kit Twitter

Rozwiązanie:

Wcześniej użyłem: Fabric.with (to, nowy Crashlytic s()); & Fabric.with (to, nowy Twitter (authConfig)); W końcu nie działa.

Przed Integracja Twitter mój kod jest

- Fabric.with (ta nowa Crashlytics());

Po dodaniu Twittera zastępuje się

- Tkanina.z (ten nowy Twitter (authConfig), new Crashlytics());

Teraz działa jak czar,

3

Oto jak I wdrożone Twitter logowanie z tkaniny:

  1. klucza Declare Twitter i sekret:

    private static final String TWITTER_KEY = "r5nPFPbcDrzoJM9bIBCqyfHPK"; 
    private static final String TWITTER_SECRET = "oJ8y2KPIySPpoBX3eCcqgcnmPGXLI94BR4g9ZztnApSmXQG9Ij "; 
    
    //Twitter Login Button 
    TwitterLoginButton twitterLoginButton; 
    
  2. onCreate() metoda:

    //Initializing TwitterAuthConfig, these two line will also added automatically while configuration we did 
    TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET); 
    Fabric.with(this, new Twitter(authConfig)); 
    
    setContentView(R.layout.activity_main); 
    
    //Initializing twitter login button 
    twitterLoginButton = (TwitterLoginButton) findViewById(R.id.twitterLogin); 
    
    //Adding callback to the button 
    twitterLoginButton.setCallback(new Callback<TwitterSession>() { 
        @Override 
        public void success(Result<TwitterSession> result) { 
         //If login succeeds passing the Calling the login method and passing Result object 
         login(result); 
        } 
    
        @Override 
        public void failure(TwitterException exception) { 
         //If failure occurs while login handle it here 
         Log.d("TwitterKit", "Login with Twitter failure", exception); 
        } 
    }); 
    

3.override onActivityResult():

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     //Adding the login result back to the button 
     twitterLoginButton.onActivityResult(requestCode, resultCode, data); 
    } 

4.finally, login():

public void login(Result<TwitterSession> result) { 

//Creating a twitter session with result's data 
     TwitterSession session = result.data; 

     //Getting the username from session 
     final String username = session.getUserName(); 

     //This code will fetch the profile image URL 
     //Getting the account service of the user logged in 
     Twitter.getApiClient(session).getAccountService() 
       .verifyCredentials(true, false, new Callback<User>() { 
        @Override 
        public void failure(TwitterException e) { 
         //If any error occurs handle it here 
        } 

        @Override 
        public void success(Result<User> userResult) { 
         //If it succeeds creating a User object from userResult.data 
         User user = userResult.data; 

         //Getting the profile image url 
         String profileImage = user.profileImageUrl.replace("_normal", ""); 

         Log.d("done","name-->"+username + "url-->"+profileImage); 
         // Toast.makeText(this,"name-->"+username + "url-->"+profileImage,Toast.LENGTH_LONG).show(); 

        } 
       }); 
    } 

masz nazwy użytkownika i profilepicture URL w login() do używaj, gdzie chcesz.

+0

Czy możesz mi powiedzieć proszę, jak mogę przekierować użytkownika do ekranu logowania do Twittera (jeśli nie jest zalogowany) aplikacji, jeśli jest zainstalowany lub do przeglądarki? –