-2

私は、Twitter 統合 (Twitter4j を使用) を持つ android プロジェクトを開発しています。これが私のコードです..、.

class BitmapDownloaderTask extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... params) {

        ConfigurationBuilder builder = new ConfigurationBuilder();
        builder.setOAuthConsumerKey(TWITTER_CONSUMER_KEY);
        builder.setOAuthConsumerSecret(TWITTER_CONSUMER_SECRET);
        Configuration configuration = builder.build();

        TwitterFactory factory = new TwitterFactory(configuration);
        twitter = factory.getInstance();

        try {
            requestToken = twitter.getOAuthRequestToken(TWITTER_CALLBACK_URL);
            MainActivity.this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(requestToken.getAuthenticationURL())));
        }catch(TwitterException e){e.printStackTrace();}

        System.out.println("Fun");

        return "Run";
    }

    @Override
    protected void onPostExecute(String txt) {
        if (isCancelled()) {
            txt = null;
        }

        if(txt!=null){
            System.out.println(txt);
                    Uri uri = getIntent().getData();
                    System.out.println(uri);
        }
    }
}

私の問題は、Twitterページが別のスレッドで開かれており、Twitterページにまだいるときに「楽しい」と「実行」が出力され、Twitter認証のpostexecuteがすでに実行されているため、uriでnullを取得した後に戻る..,.

Twitter認証後にコードを実行するにはどうすればよいですか。

また

認証が成功した後、または Facebook onComplete のようなエラー後に実行してキャンセルする方法はありますか..,.

4

1 に答える 1

1

これにより、別のアプリケーションであるデフォルトのブラウザが起動します。コールバック URL でカスタム スキームを使用し、アプリをハンドラーとして登録すると、承認が成功したときにアプリに制御を戻すことができます。より適切な制御が必要な場合は、ページを WebView に読み込み、イベントをインターセプトして通知を受け取る必要があります。OAuth の全体的な統合は簡単ではありませんが、サンプル プロジェクトを含む記事で、そのことをよく説明しています。

http://blog.doityourselfandroid.com/2011/08/08/improved-twitter-oauth-android/

そのブログの他の関連記事もチェックしてください。

于 2012-11-20T08:52:38.833 に答える