简体   繁体   中英

Twitter Fabric Login for Android

I'm attempting to use the new Fabric API that Twitter is offering to let users login to my app. I've followed the tutorial exactly (at least I think I have, maybe I've made some mistakes) here after setting up my project with all of the necessary steps; now when I hit the login button and authenticate the button gives back a successful response but when I go to get the Twitter Session after that I get an exception that looks like

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

(again, I followed the tutorial to a T up to this point, but if you can think of anything then I'd be willing to try it)

The Fabric SDK separates functionality into modules called Kits. You must indicate which kits you wish to use via Fabric.with(). This is typically done by extending Android's Application class.

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());
    }
}

More info: https://dev.twitter.com/twitter-kit/android/integrate

See the canonical sample app at: https://github.com/twitterdev/cannonball-android

My case error is: Must start with Fabric.with() before calling twitter kit

Solution:

Before that I have used: Fabric.with(this, new Crashlytics()); & Fabric.with(this, new Twitter(authConfig)); Finally not working.

Before Integrating Twitter my code is

-- Fabric.with(this, new Crashlytics());

After Integrating Twitter I replace with

-- Fabric.with(this, new Twitter(authConfig),new Crashlytics());

Now working like a charm,

Here's how I implemented Twitter login with fabric:

  1. Declare twitter key and secret:

      private static final String TWITTER_KEY = "r5nPFPbcDrzoJM9bIBCqyfHPK"; private static final String TWITTER_SECRET = "oJ8y2KPIySPpoBX3eCcqgcnmPGXLI94BR4g9ZztnApSmXQG9Ij "; //Twitter Login Button TwitterLoginButton twitterLoginButton; 
  2. onCreate() method:

     //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.override 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.finally, 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();

                    }
                });
    }

You have username and profilepicture url in login() to use wherever you want.

Latest Twitter Integration with Android Studio

This below link provide the sample code you can use this code to integrate twitter latest sdk (Fabric). it's provide all feature we can easily integrate less time take

Twitter Sample code

Reference Code Plz check it

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM