【问题标题】:android twitter4j callback don't workandroid twitter4j 回调不起作用
【发布时间】:2012-08-23 02:48:18
【问题描述】:

在通过 twitter 进行身份验证后,我遇到了回调问题。 我在 onNewItem 上获得了令牌,但网页仍然存在。

这是我的代码

public class TwitterRequest extends Activity {

    private Twitter niceTwitter;
    public RequestToken niceRequestToken;
    private Twitter twitter;
    private RequestToken requestToken;
    public final static String TWIT_KEY = "dsadsdsdsads";

    public final static String TWIT_SECRET = "sdsdsdsd";

    public final static String TWIT_URL = "callbackapp://tweeter";

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        niceTwitter = new TwitterFactory().getInstance();

        niceTwitter.setOAuthConsumer(TWIT_KEY, TWIT_SECRET);

        niceRequestToken = null;

        try {
            niceRequestToken = niceTwitter.getOAuthRequestToken(TWIT_URL);
        } catch (TwitterException e) {
            e.printStackTrace();
            Dbg.p("niceRequestToken: " + niceRequestToken);
        }


        String authURL = niceRequestToken.getAuthenticationURL();

        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authURL)));

    }

    protected void onNewIntent(Intent intent) {

        super.onNewIntent(intent);

        Uri twitURI = intent.getData();
        Intent response = new Intent();

        if (twitURI != null && twitURI.toString().startsWith(TWIT_URL)) {

            String oaVerifier = twitURI.getQueryParameter("oauth_verifier");

            try {

                AccessToken accToken = niceTwitter.getOAuthAccessToken(
                        niceRequestToken, oaVerifier);

                String token = accToken.getToken();

                response.putExtra("token", token);

            } catch (TwitterException te) {
                Log.e("tag",
                        "Failed to get access token: " + te.getMessage());
                response.putExtra("token", "error");
            }

            setResult(RESULT_OK, response);
            finish();
        }
    }

}

当网页打开时,我登录 twitter 并收到令牌,但浏览器可见且 android 不关闭页面。

这是我的清单

<activity
            android:name=".activities.twitter.TwitterRequest"
            android:launchMode="singleInstance" >
            <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:host="tweeter"
                    android:scheme="callbackapp" />
            </intent-filter>
        </activity>

【问题讨论】:

    标签: android twitter callback twitter4j


    【解决方案1】:

    问题是你启动了一个启动浏览器应用程序的新活动。

    此时您有 2 个活动。当您在第一个活动上调用 finish() 时,第二个活动仍将保留。

    我建议你在你的活动中创建一个WebView,这样你就可以控制网页的可见性

    【讨论】:

      【解决方案2】:

      试试下面修改的清单活动条目

      <activity
                  android:name=".activities.twitter.TwitterRequest"
                  android:launchMode="singleTask" >
                  <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:host="callback"
                          android:scheme="x-oauthflow-twitter" />
                  </intent-filter>
              </activity>
      

      【讨论】:

      • 抱歉没用。我修改了: android:host="callback" android:scheme="x-oauthflow-twitter" /> 和 public final static String TWIT_URL = "callback:///";
      猜你喜欢
      • 1970-01-01
      • 2014-07-23
      • 1970-01-01
      • 2011-10-21
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多