【发布时间】:2015-01-19 20:52:23
【问题描述】:
我在 WebView 中实现用户身份验证时遇到问题。
正如 API 文档所说,我需要加载 URL“http://example.com/?key=abc”,然后用户输入他的登录名和密码,然后他被重定向到网页“myapp://token#access_token=123456”。
我只需要在 WebView 中加载它并使用“123456”令牌返回我的应用程序。第一个问题是 WebView 不支持自定义协议,它给我一个错误 "ERR_UNKNOWN_URL_SCHEME"。
第二个问题是我不完全了解如何使用页面数据返回我的应用程序。
在 AndroidManifest.xml 我有这个:
<activity
android:name="(appname)"
android:label="@string/app_name"
android:configChanges="orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<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="myapp"
android:host="token"/>
</intent-filter>
</activity>
在 Main.java 文件中我有以下代码:
Intent i = new Intent(Main.this, LoginWebViewActivity.class);
startActivityForResult(i, 1);
在 LoginWebActivity.java 我有以下代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webviewact);
webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("http://example.com/?key=abc");
}
我看到了一个快速的解决方案:在外部浏览器中打开此链接,但是,我不明白我的应用程序如何从外部浏览器获取数据。
【问题讨论】: