ユーザーが私のアプリにログインできるようにするためにTwitterが提供している新しいFabric APIを使用しようとしています。私はチュートリアルに正確に従いました(少なくとも、私は間違いがあると思いますが、おそらくいくつかの間違いを犯しました) ここ 必要なすべての手順でプロジェクトを設定した後。ログインボタンを押してボタンを認証すると、成功した応答が返されますが、その後Twitterセッションを取得すると、次のような例外が発生します。
Caused by: Java.lang.IllegalStateException: Must start Twitter Kit with Fabric.with() first
(ここでも、チュートリアルをこの時点までTまで実行しましたが、何か考えられることがあれば、喜んで試してみます)
ファブリック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
私のケースのエラーは次のとおりです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());
今、魅力のように働いて、
ファブリックを使用してTwitterログインを実装する方法は次のとおりです。
Twitterのキーと秘密を宣言:
_ 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.オーバーライド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があり、どこでも使用できます。
Android Studioとの最新のTwitter統合
この下のリンクは、このコードを使用してTwitterの最新SDK(Fabric)を統合できるサンプルコードを提供しています。短時間で簡単に統合できるすべての機能を提供します