Android Webview设置HttpAuthUserName和Password与Google登录无效
我是Android开发的新手,需要实施这个活动,这样嵌入式Webview就能够登录到Google帐户登录,而不需要用户首先手动输入用户名和密码。我在参加活动时有用户名和密码。我不应该使用AccountManager,因为它现在有另一个线程 我读过 使用WebView.SetHttpAuthUserName和Password 重写WebViewClient.OnReceiveDhtPauthRequest不会触发调用 但似乎都不管用。我已经通过代码路径进行了手动测试,发现如下: 在调用WebViewClient.ShouldOverrideUrlLoading并使用WebView.SetHttpAuthUserName和password以编程方式设置用户名+密码后,WebViewDatabase.HashttpAuthUserName和password返回true,但WebViewDatabase.HasUserName和password为false,用户仍然可以看到登录屏幕 如果用户手动输入凭据后WebViewDatabase.hasUserName和Password为true,则WebViewClientbrowser似乎甚至没有加载Google登录url并直接转到回调url 有人能提供一些见解吗 下面是我设置webview和webviewclient时的代码部分:Android Webview设置HttpAuthUserName和Password与Google登录无效,android,webview,passwords,Android,Webview,Passwords,我是Android开发的新手,需要实施这个活动,这样嵌入式Webview就能够登录到Google帐户登录,而不需要用户首先手动输入用户名和密码。我在参加活动时有用户名和密码。我不应该使用AccountManager,因为它现在有另一个线程 我读过 使用WebView.SetHttpAuthUserName和Password 重写WebViewClient.OnReceiveDhtPauthRequest不会触发调用 但似乎都不管用。我已经通过代码路径进行了手动测试,发现如下: 在调用WebVie
final WebView browser = (WebView) findViewById(R.id.browser);
WebViewClient webViewClient = new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.contains(ACCOUNT_LOGIN_SERVICE_PREFIX)){
WebViewDatabase webviewDb = WebViewDatabase.getInstance(getBaseContext());
if(!webviewDb.hasHttpAuthUsernamePassword()){
view.setHttpAuthUsernamePassword(
"accounts.google.com",
"",
"mygmail@gmail.com",
"mypassword");
view.loadUrl(url);
}
return super.shouldOverrideUrlLoading(view, url);
}
}
};
browser.setWebViewClient(webViewClient);
browser.loadUrl(INSTALLED_APP_OAUTH);
setHttpAuthUsernamePassword用于HTTP身份验证,如基本身份验证或摘要身份验证。谷歌账户登录页面不使用任何这些,所以这是行不通的
你想干什么?您可以从AccountManager或新发布的Google Play Services API获得一个不推荐使用的ClientLogin或OAuth令牌。这样,你就可以登录到几乎所有的谷歌服务,而不需要用户输入密码 谢谢。我得到了谷歌播放API。我想做的是通过Google帐户服务登录,无论是WS-Endpoint还是本机Adroid AccoundManager,而不需要用户键入用户名和密码。在基于web的版本中,我通过添加一些JavaScriptInterface来遍历dom并以userAgent的身份登录,解决了这个问题,但这似乎有点骇人听闻。理想的情况是通过编程将帐户添加到本机Android AccountManager,然后使用Play API获取令牌。如果无法通过编程将Google帐户添加到AccountManager,用户需要通过向导添加一个。如果已经安装了一个,您可以获得令牌并登录。