【发布时间】:2018-07-27 11:11:45
【问题描述】:
从我的应用程序进行身份验证后,会显示一个新窗口,稍后会重定向回该应用程序。然后在我的活动中调用 onNewIntent() 。 But when select to go back to my app, the twitter web page still shows.不应显示重定向回应用程序的 Twitter 页面。如何关闭 Twitter 网页视图?
【问题讨论】:
从我的应用程序进行身份验证后,会显示一个新窗口,稍后会重定向回该应用程序。然后在我的活动中调用 onNewIntent() 。 But when select to go back to my app, the twitter web page still shows.不应显示重定向回应用程序的 Twitter 页面。如何关闭 Twitter 网页视图?
【问题讨论】:
我的建议是不在新的网络浏览器窗口中启动“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 验证器。
希望这会有所帮助!
【讨论】:
我从我的活动中调用此方法
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)));
}
这会打开一个网页视图(重定向回我的活动的 Twitter 页面)。
在此之后它调用我的活动的onNewIntent() 函数并显示活动但是当我按下返回按钮时它再次显示 Twitter 页面。现在我的问题是如何关闭该 Twitter 页面
【讨论】:
新窗口是 Activity 吗?如果是这样,请从您的主要活动中调用 startActivityForResult() 并实现回调。
当你的回调被触发时,你可以根据需要重新加载你的 webview。
您还可以重组您的应用程序,使您的主要活动的onCreate() 足够智能,不会在 web 视图中显示旧结果。
【讨论】: