1

ユーザーに代わってユーザーのアカウントのステータスを更新するためTwitterに、アプリケーション(OAuthおよびライブラリを使用)に統合しました。twitter4jこれはうまくいきます。

ステータスを更新する前にShared Preferences、storedをチェックインしAccessTokenます。利用可能な場合、つまりユーザーがログインしている場合はステータスを更新します。それ以外の場合はユーザーがログインしていないため、ユーザーがログインするための Twitter ページを表示します。

問題は、ユーザーが一度ログインしたため現在ログインしている場合、ユーザーがAccessTokenShared Preferencesアプリケーションから許可を取り消して status を投稿しようとすると、この例外またはエラーが発生することです。

ここに画像の説明を入力

ユーザーが権限を取り消したため、承認を求める必要があることを知るにはどうすればよいですか?

編集: 不正アクセスの場合の処理​​方法を知り、処理しました。しかし、それでもこの例外がスローされます。

4

2 に答える 2

3

奇妙に聞こえるかもしれませんが、時刻/日付の更新を自動的に設定してみてください。私の以前の経験に基づいて、これが問題でした。これを設定して電話の時刻を同期すると、すべて正常に動作します。

次に、これを試してください:-

// ConfigurationBuilder
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.setOAuthConsumerKey(twitterConsumerKey);
builder.setOAuthConsumerSecret(twitterConsumerSecret);

// Access Token from sharedPreference
String access_token = mSharedPreferences.getString(TwitterConstants.PREF_KEY_OAUTH_TOKEN, "");
// Access Token Secret from sharedPreference
String access_token_secret = mSharedPreferences.getString(TwitterConstants.PREF_KEY_OAUTH_SECRET, "");

AccessToken accessToken = new AccessToken(access_token, access_token_secret);
twitter = new TwitterFactory(builder.build()).getInstance(accessToken);

// Getting user details from twitter
// For now i am getting his name only
long userID = accessToken.getUserId();
User user = twitter.showUser(userID);
String username = user.getName() + " (" + user.getScreenName() + ")";
于 2013-07-08T13:06:47.867 に答える
0

問題を解決しました。問題は、ユーザーがアプリケーションの認証を解除したときの動作をテストしていたことです。そして、dev.twitter.com でアプリケーションを作成するために使用した twitter アカウントからのアプリケーションを無許可にしました。これを行うと、共有設定に保存されていたアクセストークンが無効になり、コードで共有設定からフェッチして使用すると、例外が発生していました。

解決策は、dev.twitter.com で作成されたアプリケーションでアクセストークンを再作成することです。そして私のコードでは、この条件を追加しました:

catch (TwitterException e) {

    if (e.getStatusCode() == -1) {

        // This is the case when the developer who created the application has revoked the application permission.
        // In this case we need to remove stored access token as it is no longer valid.
        // Logging in again will fetch newer accesstoken and will solve the problem.
        logoutFromTwitter();
        loginToTwitter();
    }
}
于 2013-07-09T06:33:59.743 に答える