-2

我正在开发一个 android 项目,其中我有 Twitter 集成(使用 Twitter4j)。这是我的代码..,。

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 身份验证 postexecute 已经执行后返回时打印“Fun”和“Run”,因此我在 uri 中得到了 null ..,。

有人可以帮我吗,如何在 Twitter 身份验证后运行一些代码。

或者

是否有任何方法在成功验证后或在 Facebook onComplete 和 cancel 等错误后运行..,。

4

1 回答 1

1

这将启动默认浏览器,这是一个单独的应用程序。您在回调 URL 中使用自定义方案并将您的应用程序注册为处理程序,因此当授权成功时,您可以将控制权交还给您的应用程序。如果你想要更好的控制,你需要在 WebView 中加载页面并拦截事件以获得通知。整个 OAuth 事物的集成并不是微不足道的,但这里有一篇带有示例项目的文章,描述得非常好:

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

还可以查看该博客上的其他相关文章。

于 2012-11-20T08:52:38.833 回答