Ткань Вход в систему с кнопкой твиттера выделен серым цветом
Я выполнил инструкции, используя Fabric, чтобы реализовать мой вход в моем пользовательском приложении.
Проблема заключается в том, что когда я запускаю приложение, кнопка неактивна.
Вот ошибки в моей трассе стека:
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
Но я также инициализировал структуру в своей деятельности.
Вот фрагмент:
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);
}
Ответы
Ответ 1
setContentView(R.layout.activity_main);
/* Twitter */
TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
Fabric.with(this, new Twitter(authConfig));
Вы должны инициализировать Fabric перед тем, как надуть кнопку Twitter. Потому что иначе, когда конструктор кнопки Twitter называется, он не знает, как подключить twitter api. Об этом говорится в описании ошибки.
6509-6509/com.jan.simplesharing E/Twitter﹕ Must Initialize Fabric before using singleton()
В общем, вы можете инициализировать Fabric в классе Application
. Это то, что они делают в своем приложении для демонстрации образцов: https://github.com/twitterdev/cannonball-android/blob/master/app/src/main/java/io/fabric/samples/cannonball/App.java#L98
Ответ 2
Выполните следующие действия, чтобы выполнить вход в twitter с помощью Fabric:
Создайте класс, который расширяет класс Application и копирует в него следующий код -
TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
Fabric.with(this, new Twitter(authConfig));
Функция Fabric.with() выполняет функции инициализации.
Не забывайте упоминать этот класс приложения в файле манифеста Android.
<application
android:name="com.demoapp.BaseApp"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:theme="@android:style/Theme.Black" >
Ответ 3
Вы заменили TWITTER_KEY и TWITTER_SECRET вашими клавишами приложения?
Если нет, вы должны зарегистрировать приложение twitter на https://apps.twitter.com/ и использовать ключи, которые предоставляет платформа. Кроме того, убедитесь, что вы выполняете шаги учебника (https://dev.twitter.com/twitter-kit/android/configure) для конфигурации вашего приложения.