2

我试图用这个例子登录 twitter:

http://www.androidhive.info/2012/09/android-twitter-oauth-connect-tutorial/

我的问题是在浏览器登录完成后。它重定向到我的主要活动,而不是

我调用登录方法的活动。因此,我没有得到用户

来自用户的 AccessToken。

这是来自我的清单:

    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="oauth" android:host="t4jsample"/>
    </intent-filter>

我的登录方法:

private void loginToTwitter() {
        // Check if already logged in
        if (!isTwitterLoggedInAlready()) {
            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);
                this.startActivityForResult(new Intent(Intent.ACTION_VIEW, Uri
                        .parse(requestToken.getAuthenticationURL())), TWITER);
            } catch (TwitterException e) {
                e.printStackTrace();
            }
        } else {
            // user already logged into twitter
            Toast.makeText(getApplicationContext(),
                    "Already Logged into twitter", Toast.LENGTH_LONG).show();
        }
}

我的回调地址

static final String TWITTER_CALLBACK_URL = "oauth://t4jsample";

感谢您的帮助:)

4

2 回答 2

1

我有同样的问题。我所做的是:

1 - 从http://www.androidhive.info/2012/09/android-twitter-oauth-connect-tutorial/卸载示例应用程序

2 - 添加

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="oauth" android:host="t4jsample"/>
        </intent-filter>

在清单中,在您想要返回的活动中。

(您可以保留示例应用程序,但将数据 android:host="t4jsample" 更改为其他字符串)。希望能帮助到你!

于 2014-01-16T04:20:09.047 回答
0

我不确定,因为我从未使用 twitter api 整合过。

但我认为你应该在获得授权后开始一个意图。

Intent i = new intent(reditectedActivity.class, thisActivity.this);
startActivity(i);

所以就像这样

private void loginToTwitter() {
        // Check if already logged in
        if (!isTwitterLoggedInAlready()) {
            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);
                this.startActivityForResult(new Intent(Intent.ACTION_VIEW, Uri
                        .parse(requestToken.getAuthenticationURL())), TWITER);
Intent i = new intent(reditectedActivity.class, thisActivity.this);
startActivity(i);
            } catch (TwitterException e) {
                e.printStackTrace();
            }
        } else {
            // user already logged into twitter
            Toast.makeText(getApplicationContext(),
                    "Already Logged into twitter", Toast.LENGTH_LONG).show();
        }
}

或者在主要活动中你可以做..

首先定义这个

static final String TWITTER_CALLBACK_URL = null;

然后

if (!TWITTER_CALLBACK_URL == nul){
Intent i = new intent(mainactivity.this, whereIsTheLogin.class);
startActivity(i);
}
于 2013-08-25T09:50:19.240 回答