首页 文章

Twitter Fabric登录Android版

提问于
浏览
13

我完全遵循了教程(至少我认为我有,也许我犯了一些错误)here在设置完所有必要步骤的项目之后;现在,当我点击登录按钮并验证按钮时,会给出成功的响应,但是当我去获取Twitter会话后,我得到一个看起来像

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

(再次,我按照教程一直到T,但如果你能想到任何事情,那么我愿意尝试一下)

4 回答

  • 4

    Fabric SDK将功能分为称为Kits的模块 . 您必须通过Fabric.with()指明您希望使用哪些套件 . 这通常通过扩展Android的Application类来完成 .

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

    更多信息:https://dev.twitter.com/twitter-kit/android/integrate

    请参阅规范示例应用程序:https://github.com/twitterdev/cannonball-android

  • 2

    我的案例错误是: Must start with Fabric.with() before calling twitter kit

    解:

    在此之前我曾经使用过: Fabric.with(this, new Crashlytics()); & Fabric.with(this, new Twitter(authConfig)); 最后没有用 .

    在整合Twitter之前我的代码是

    • Fabric.with(这个,新的Crashlytics());

    在集成Twitter后我替换为

    • Fabric.with(这个,新的Twitter(authConfig),新的Crashlytics());

    现在像魅力一样工作

  • 15

    以下是我使用fabric实现Twitter登录的方法:

    • Declare twitter key and secret:
    private static final String TWITTER_KEY = "r5nPFPbcDrzoJM9bIBCqyfHPK";
     private static final String TWITTER_SECRET = "oJ8y2KPIySPpoBX3eCcqgcnmPGXLI94BR4g9ZztnApSmXQG9Ij ";
    
     //Twitter Login Button
     TwitterLoginButton twitterLoginButton;
    
    • onCreate() 方法:
    //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.最后, 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();
    
                        }
                    });
        }
    

    您可以在 login() 中使用用户名和profilepicture网址,以便随时随地使用 .

  • 3

    Latest Twitter Integration with Android Studio

    下面的链接提供了示例代码,您可以使用此代码来集成twitter最新的sdk(Fabric) . 它提供了我们可以轻松集成所有功能的更少时间

    Twitter Sample code

    Reference Code Plz check it

相关问题