Android Fabric TwitterCore login without TwitterLoginButton Android Fabric TwitterCore login without TwitterLoginButton android android

Android Fabric TwitterCore login without TwitterLoginButton


Take a look at TwitterAuthClient.

An example usage would be something like (where getCallingActivity() can be replaced with your calling Activity),

TwitterAuthClient twitterAuthClient = new TwitterAuthClient();twitterAuthClient.authorize(getCallingActivity(), new Callback<TwitterSession>() {        @Override        public void success(final Result<TwitterSession> result) {            final TwitterSession sessionData = result.data;            // Do something with the returned TwitterSession (contains the user token and secret)        }        @Override        public void failure(final TwitterException e) {            // Do something on fail        }    });

Then delegate the onActivityResult to TwitterAuthClient,

twitterAuthClient.onActivityResult(requestCode, resultCode, data);


You don't need to create a button for this. Basically, if you dig into some of the classes, you'll find that the code is relatively straightforward. So, here's how I did it. You just need to call TwitterAuthClient().authorize(Activity, Callback<TwitterSession)

The full code:

import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.widget.Toast;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.TwitterAuthClient;/** * Created by Andrew on 6/23/15. */public class ConnectTwitterActivity extends Activity {    //The auth client itself    /*you can abstract this and call TwitterCore.getInstance().login()    but basically that call is doing this one..     */    TwitterAuthClient client;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //instanciate our client        client = new TwitterAuthClient();        //make the call to login         client.authorize(this, new Callback<TwitterSession>() {            @Override            public void success(Result<TwitterSession> result) {                //feedback                Toast.makeText(getApplicationContext(), "Login worked", Toast.LENGTH_LONG).show();            }            @Override            public void failure(TwitterException e) {                //feedback                Toast.makeText(getApplicationContext(), "Login failed", Toast.LENGTH_LONG).show();            }        });    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        //this method call is necessary to get our callback to get called.         client.onActivityResult(requestCode, resultCode, data);    }}


You'd probably want to call the regular Twitter OAuth mechanism through something like Twitter4J. If you use the TwitterLoginButton this is all wrapped up for you via functions in Twitter Kit.