从我的应用程序进行身份验证后,会显示一个新窗口,稍后会重定向回应用程序。然后在我的活动中调用onNewIntent()。但是当选择回到我的应用程序时,Twitter网页仍会显示。不应显示带有重定向回应用程序的Twitter页面。如何关闭Twitter网页视图?
答案 0 :(得分:0)
我从我的活动中调用此方法
public void askOAuth(Context context,Handler handler) {
_msg = new Message();
_msg.arg1 = AUTHORISE_TWITTER_APP;
mContext=context;
this.handler=handler;
consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY,CONSUMER_SECRET);
provider = new DefaultOAuthProvider(
"http://twitter.com/oauth/request_token",
"http://twitter.com/oauth/access_token",
"http://twitter.com/oauth/authorize");//
//provider.setOAuth10a(true);
String authUrl = provider.retrieveRequestToken(consumer,CALLBACK_URL);
mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));
}
这会打开一个Web视图(重定向回我的活动的Twitter页面)。
在此之后它会调用onNewIntent()
我的活动和活动的功能,但是当我按下后退按钮然后它再次显示Twitter页面。现在我的问题是如何关闭该推特页面
答案 1 :(得分:0)
我的建议是 NOT 在新的网络浏览器窗口中启动“authURL”。我个人喜欢做的是启动一个包含WebView的新Activity,并将URL传递给该Activity。这样,您可以更轻松地在Oauth身份验证过程中管理应用内的导航。所以不要这样做:
String authUrl = provider.retrieveRequestToken(consumer,CALLBACK_URL);
mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));
我会这样做:
Intent intent = new Intent(mContext, YourActivityWithAWebView.class);
intent.putExtra("AUTH_URL", authUrl);
startActivity(intent);
然后,在您的WebView中,您可以使用shouldOverrideUrlLoading()方法获取VERIFIER URL并检索您的Oauth Verifier。
希望这有帮助!
答案 2 :(得分:-1)
新窗口是活动吗?如果是这样,请从您的主要活动中调用startActivityForResult()
并实施回调。
当您的回调被触发时,您可以根据需要重新加载您的网页浏览。
您还可以重新构建您的应用,以便主要活动的onCreate()
足够聪明,不会在网络视图中显示旧结果。