当前位置: 首页 > 知识库问答 >
问题:

Android Webview设置HttpAuthUserName和Password无法通过谷歌登录

微生城
2023-03-14

我是Android开发的新手,需要实施这项活动,以便嵌入式Webview能够登录到谷歌帐户登录,而无需用户在第一时间手动输入用户名和密码。我有进入活动时的用户名和密码。我不应该使用帐户管理器,因为现在有另一个线程。

我读过关于

  1. 使用WebView。设置HttpAuthUserName和密码

但似乎都不管用。我已经通过代码路径进行了手动测试,结果如下:

  1. 在WebViewClient之后。调用了ShouldOverrideUrlLoading,我使用WebView以编程方式设置用户名密码。设置HttpAuthUserName和密码,WebViewDatabase。hasHttpAuthUsernameAndPassword返回true,但WebViewDatabase返回true。HasUserName和Password为false,用户仍能看到登录屏幕
  2. 如果是WebViewDatabase。HasUserName和Password为true(用户手动输入凭据后),WebViewClient(浏览器)似乎甚至没有加载Google登录url并直接转到回调url

有人能提供一些见解吗?

下面是我设置webview和webviewclient时的代码部分:

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);

共有1个答案

隆向晨
2023-03-14

setHttpAuthUsernamePassword()用于HTTP身份验证,如基本或摘要身份验证。谷歌账户登录页面不使用其中任何一个,所以这是行不通的。

你想做什么?您可以从AccountManager或新发布的Google Play Services API获得ClientLogin(已弃用)或OAuth令牌。这样,你就可以登录几乎所有的谷歌服务,而不需要用户输入密码。

 类似资料:
  • 谷歌浏览器可以当问其他页面,但是无法登录账号,打开会显示这个,大佬们如何解决?

  • 我想使用Google CAL API v3来观看多个日历,从而将这些日历中的所有事件更新到主日历,因此我需要使用WATCH/PUSH通知,以便每当有新事件在这些cal中,这些事件将自动在我的主日历中推送/创建。 但是,我面临以下问题:在API资源管理器下。大多数服务返回200 OK,除了Watch请求不工作。 服务 我收到了以下请求和响应 请求 回应 然后我按照下面的谷歌文档https://dev

  • 我试图登录与谷歌在我的项目。登录页面工作正常,但当我试图获取数据,我得到这个错误。提前谢谢你。 我正在wampserver上运行我的php代码。我正在VisualStudio上编写页面。你可以看到我的代码。 //这是我的谷歌登录代码。php ( ! ) 致命错误:未捕获的GuzzleHttp\Exception\RequestException:cURL错误60:SSL证书问题:无法获取本地颁发者

  • 我试图将谷歌登录集成到我的应用程序中。我没有后端服务器,我只是得到登录到我的应用程序的谷歌帐户的详细信息。 我第一次尝试使用谷歌登录的例子,但我得到了一个错误(除了打印下面的stacktrace外,没有进行任何代码更改)。我只是使用了signianctivity示例,因为我没有后端服务器。 密码 从我所读到的,这个问题可能是由SHA1一代引起的。 我遵循了完整的指南,但显然它不起作用。 我从gra

  • 我试图上传图像文件到我在GCS的桶中,只在我的页面上插入了一个文件输入和一个按钮进行测试,当我点击按钮时,它没有做任何事情,没有错误,什么都没有。我在谷歌云平台计算引擎中使用的是Ubuntu VM。实际上,我无法使用谷歌云存储客户端做任何事情,无法上传对象、列出对象、列出存储桶,我已经将它上传到我的网站,但它不工作,首先在localhost上尝试,但它给了我这个错误:cURL错误60: SSL证书

  • 我正在开发一个应用程序内购买,所以我想知道订阅是否过期。我已经获得了RefreshToken和AccessToken,但是当我试图根据此获取订阅信息时,我总是得到相同的错误:{“错误”:{“错误”:[ {“域”:“全局”, “原因”:“autherror”, “消息”:“无效凭据”, “位置类型”:“头”, “位置”:“授权”}], “代码”:401, “消息”:“无效凭据”}}