Twitter Login in android app

android
twitterkit

#1

I want to integrate twitter login in my android app. But, I have not found any sdk implementation in twitter developers account. Where I get the implementation procedure for twitter login. I have tried with fabric twitter integration in android with my customer key and secrete key it always showing following error when I click on twitter button in android
Error: E/Twitter: Invalid json: <?xml version="1.0" encoding="UTF-8"?>

Desktop applications only support the oauth_callback value ‘oob’
/oauth/request_token

                                                                    com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
                                                                        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220)

                                                                     Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
                                                                        at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:387)
                                                                         
				E/Twitter: Failed to get request token
                                                                    com.twitter.sdk.android.core.TwitterApiException: HTTP request failed, Status: 401

Here is my code twitter fabric login

public class MainActivity extends AppCompatActivity {

    // Note: Your consumer key and secret should be obfuscated in your source code before shipping.
    private static final String TWITTER_KEY = "added customer key";
    private static final String TWITTER_SECRET = "added secrete key";

    TwitterLoginButton loginButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
        Fabric.with(this, new Twitter(authConfig));
        setContentView(R.layout.activity_main);

        loginButton = (TwitterLoginButton) findViewById(R.id.twitter_login_button);
        loginButton.setCallback(new Callback<TwitterSession>() {
            @Override
            public void success(Result<TwitterSession> result) {
                Log.d("fabriclogin","yes");
                // The TwitterSession is also available through:
                // Twitter.getInstance().core.getSessionManager().getActiveSession()
                TwitterSession session = result.data;
                // TODO: Remove toast and use the TwitterSession's userID
                // with your app's user model
                String msg = "@" + session.getUserName() + " logged in! (#" + session.getUserId() + ")";
                Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();


            }
            @Override
            public void failure(TwitterException exception) {
                Log.d("TwitterKit", "Login with Twitter failure", exception);
            }
        });

    }



    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // Make sure that the loginButton hears the result from any
        // Activity that it triggered.
        loginButton.onActivityResult(requestCode, resultCode, data);
    }

}

Android Manifest

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.social.twitterfabriclogin" >
````Preformatted text`

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity android:name=".MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <meta-data
            android:name="io.fabric.ApiKey"
            android:value="c9f3c0b6f6039795c5b710045770feab97127862" />
    </application>

    <uses-permission android:name="android.permission.INTERNET" />
</manifest>
Activity_main.xml
<?xml version="1.0" encoding="utf-8"?>

<com.twitter.sdk.android.core.identity.TwitterLoginButton
    android:id="@+id/twitter_login_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"/>

build gradle

buildscript {
repositories {
maven { url ‘https://maven.fabric.io/public’ }
}

dependencies {
    classpath 'io.fabric.tools:gradle:1.+'
}

}
apply plugin: 'com.android.application’
apply plugin: ‘io.fabric’

repositories {
maven { url ‘https://maven.fabric.io/public’ }
}

android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.social.twitterfabriclogin"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner”
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro
}
}
}

dependencies {
compile fileTree(dir: ‘libs’, include: [’*.jar’])
androidTestCompile(‘com.android.support.test.espresso:espresso-core:2.2.2’, {
exclude group: ‘com.android.support’, module: ‘support-annotations’
})
compile 'com.android.support:appcompat-v7:25.3.1’
testCompile 'junit:junit:4.12’
compile(‘com.twitter.sdk.android:twitter:2.3.2@aar’) {
transitive = true;
}
}