web-dev-qa-db-ja.com

AndroidのTwitterファブリックログイン

ユーザーが私のアプリにログインできるようにするためにTwitterが提供している新しいFabric APIを使用しようとしています。私はチュートリアルに正確に従いました(少なくとも、私は間違いがあると思いますが、おそらくいくつかの間違いを犯しました) ここ 必要なすべての手順でプロジェクトを設定した後。ログインボタンを押してボタンを認証すると、成功した応答が返されますが、その後Twitterセッションを取得すると、次のような例外が発生します。

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

(ここでも、チュートリアルをこの時点までTまで実行しましたが、何か考えられることがあれば、喜んで試してみます)

13
Jacob Collins

ファブリックSDKは、機能をキットと呼ばれるモジュールに分割します。 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

15
Cipriani

私のケースのエラーは次のとおりですTwitterキットを呼び出す前に、Fabric.with()で始める必要があります

解決:

その前に私は使用しました:Fabric.with(this、new Crashlytics());&Fabric.with(this、new Twitter(authConfig));最後に機能しません。

Twitterを統合する前の私のコードは

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

Twitterを統合した後、

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

今、魅力のように働いて、

5
sssvrock

ファブリックを使用してTwitterログインを実装する方法は次のとおりです。

  1. Twitterのキーと秘密を宣言:

    _ private static final String Twitter_KEY = "r5nPFPbcDrzoJM9bIBCqyfHPK";
     private static final String Twitter_SECRET = "oJ8y2KPIySPpoBX3eCcqgcnmPGXLI94BR4g9ZztnApSmXQG9Ij ";
    
     //Twitter Login Button
     TwitterLoginButton twitterLoginButton;
    _
  2. 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.オーバーライド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のURLがあり、どこでも使用できます。

3
Parsania Hardik

Android Studioとの最新のTwitter統合

この下のリンクは、このコードを使用してTwitterの最新SDK(Fabric)を統合できるサンプルコードを提供しています。短時間で簡単に統合できるすべての機能を提供します

Twitterサンプルコード

参照コードPlzで確認

2
Ramkailash