Hi @bonnell,
I’m using Fabric and Twitter kit in my project to enable sign with Twitter account.
build.gradle:
buildscript {
dependencies {
classpath 'io.fabric.tools:gradle:1.22.0'
}
repositories {
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
repositories {
maven { url 'https://maven.fabric.io/public' }
maven { url "http://dl.bintray.com/pixplicity/maven" }
}
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.APP_ID"
minSdkVersion 19
targetSdkVersion 25
versionCode 6
versionName "0.6.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
}
aaptOptions {
additionalParameters "--no-version-vectors"
}
buildTypes {
debug {
minifyEnabled true
useProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
applicationIdSuffix ".debug"
versionNameSuffix "-debug"
ext.enableCrashlytics = false
}
release {
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
// Distribute
ext.betaDistributionReleaseNotesFilePath = "app/release_notes.txt"
ext.betaDistributionGroupAliasesFilePath = "app/group_aliases.txt"
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile "com.android.support:support-v4:25.1.0"
compile "com.android.support:appcompat-v7:25.1.0"
compile "com.android.support:recyclerview-v7:25.1.0"
compile "com.android.support:cardview-v7:25.1.0"
compile "com.android.support:design:25.1.0"
compile "com.android.support:support-annotations:25.1.0"
compile "com.jakewharton:butterknife:8.4.0"
annotationProcessor "com.jakewharton:butterknife-8.4.0"
compile("com.crashlytics.sdk.android:crashlytics:2.6.5@aar") {
transitive = true;
}
compile("com.twitter.sdk.android:twitter:2.2.0@aar") {
transitive = true;
}
}
MainApplication.java
public class MainApplication extends Application {
private static final String TWITTER_KEY = "KEY";
private static final String TWITTER_SECRET = "SECRET";
@Override
public void onCreate() {
super.onCreate();
Crashlytics crashlyticsKit = new Crashlytics.Builder()
.core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
.build();
TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
TwitterCore twitterCore = new TwitterCore(authConfig);
Fabric.with(this, crashlyticsKit, twitterCore, new Twitter(authConfig));
}
}
SiginActivity.java
public class SignActivity extends BaseActivity {
private TwitterAuthClient mTwitterAuthClient;
@BindView(R.id.btn_twitter)
Button vBtnTwitter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign);
ButterKnife.bind(this);
mTwitterAuthClient = new TwitterAuthClient();
}
@OnClick(R.id.btn_twitter)
public void onClick(View view) {
mTwitterAuthClient.authorize(this, new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
TwitterSession session = result.data;
Log.d(TAG, session.getUserName() + " : " + session.getUserId());
}
@Override
public void failure(TwitterException exception) {
Toast.makeText(SignActivity.this, "Login with Twitter failed.", Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void onActivityResult(int requestCode, int responseCode, Intent data) {
super.onActivityResult(requestCode, responseCode, data);
mTwitterAuthClient.onActivityResult(requestCode,requestCode, data);
}
}
The method mTwitterAuthClient.authorize() always failure with exception:
E/Twitter: Authorization completed with an error
com.twitter.sdk.android.core.TwitterAuthException: Authorize failed.
at com.twitter.sdk.android.core.identity.AuthHandler.handleOnActivityResult(AuthHandler.java:98)
at com.twitter.sdk.android.core.identity.TwitterAuthClient.onActivityResult(TwitterAuthClient.java:161)
at com.APP_ID.ui.activities.SignActivity.onActivityResult(SignActivity.java:300)
at android.app.Activity.dispatchActivityResult(Activity.java:6218)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3655)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3702)
at android.app.ActivityThread.access$1300(ActivityThread.java:155)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1366)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)