Вход в Twitter Fabric для Android

Я пытаюсь использовать новый API-интерфейс Fabric, который предлагает Twitter, чтобы позволить пользователям входить в мое приложение. Я точно следовал руководству (по крайней мере, я так думаю, возможно, я сделал несколько ошибок) здесь после настройки моего проекта со всеми необходимыми шагами; теперь, когда я нажимаю кнопку входа в систему и аутентифицируюсь, кнопка возвращает успешный ответ, но когда я иду, чтобы получить сеанс Twitter после этого, я получаю исключение, которое выглядит как

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

(опять же, до этого момента я следовал учебнику до буквы T, но если вы можете что-нибудь придумать, я буду готов попробовать)


person Jacob Collins    schedule 29.10.2014    source источник
comment
оформить заказ по следующей ссылке: androidbeasts.wordpress.com/2015/07/22 /   -  person Aakash    schedule 22.08.2015


Ответы (4)


Пакет SDK Fabric разделяет функциональность на модули, называемые комплектами. Вы должны указать, какие наборы вы хотите использовать через Fabric.with(). Обычно это делается путем расширения класса приложения 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());
    }
}

Дополнительная информация: https://dev.twitter.com/twitter-kit/android/integrate.

См. образец канонического приложения по адресу: https://github.com/twitterdev/cannonball-android.

person Cipriani    schedule 29.10.2014
comment
Привет, Луис, не могли бы вы помочь мне с моим вопросом здесь ... заранее спасибо - person Y.S; 28.11.2014
comment
Спасибо большое! Я использовал автоматическую интеграцию с тканью Android Studio и полностью пропустил этот лакомый кусочек кода. Мне нужно было изменить свой API-ключ и секрет для клиента, и я понятия не имел, где его найти. - person LukeWaggoner; 03.03.2015
comment
Обратите внимание, что если вы используете twitter И crashlytics, у вас не может быть 2 разных операторов Fabric.with(...). Вы должны связать их вместе: Fabric.with(...).with(...) - person Greg Ennis; 12.03.2015
comment
@Cipriani, не могли бы вы опубликовать обновленную версию своей первой ссылки? Кажется, он не работает с перенаправлением, в котором отказано в доступе. - person rob; 19.11.2015

Моя ошибка: Должен начинаться с Fabric.with() перед вызовом twitter kit

Решение:

До этого я использовал: Fabric.with(this, new Crashlytics()); & Fabric.with(this, new Twitter(authConfig)); Наконец-то не работает.

Перед интеграцией Twitter мой код

-- Fabric.with(это, новый Crashlytics());

После интеграции Twitter я заменяю на

-- Fabric.with(это, новый Twitter(authConfig),новый Crashlytics());

Теперь работает как шарм,

person sssvrock    schedule 15.03.2016
comment
TwitterAuthConfig authConfig = new TwitterAuthConfig(getResources().getString(R.string.TWITTER_KEY), getResources().getString(R.string.TWITTER_SECRET)); Fabric.with(это, новый Twitter(authConfig),новый Crashlytics()); - person Senghani Maulik; 21.08.2019

Вот как я реализовал вход в Твиттер с помощью Fabric:

  1. Объявить ключ и секрет Twitter:

     private static final String TWITTER_KEY = "r5nPFPbcDrzoJM9bIBCqyfHPK";
     private static final String TWITTER_SECRET = "oJ8y2KPIySPpoBX3eCcqgcnmPGXLI94BR4g9ZztnApSmXQG9Ij ";
    
     //Twitter Login Button
     TwitterLoginButton twitterLoginButton;
    
  2. Метод onCreate():

    //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. переопределить 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.наконец, 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();

                    }
                });
    }

У вас есть имя пользователя и URL-адрес изображения профиля в login(), которые вы можете использовать где угодно.

person Parsania Hardik    schedule 07.06.2016
comment
Подскажите пожалуйста, как мне перенаправить пользователя на экран входа в твиттер (если он не авторизован) приложения если оно установлено или в браузер? - person Ne AS; 28.03.2017

Последняя интеграция Twitter с Android Studio

Эта ссылка ниже содержит пример кода, который вы можете использовать для интеграции последнего SDK Twitter (Fabric). он предоставляет все функции, которые мы можем легко интегрировать, затрачивая меньше времени

Пример кода Twitter

Справочный код Пожалуйста, проверьте его

person Ramkailash    schedule 06.01.2015
comment
Здравствуйте, у меня возникли проблемы с использованием комплекта входа в твиттер Fabric. В плагине Android Studio Farbic на экране выбора комплекта для установки вместо «Установить» отображается вариант «Неизвестно». Кто-нибудь еще сталкивался с этой проблемой? Должен отметить, что с проектом с нуля такого не бывает. - person Ionut Negru; 12.01.2015