在groovy上使用HtmlUnit进行Facebook网络授权

时间:2015-10-12 15:02:30

标签: facebook cookies groovy htmlunit

一年前我写了一个简单的Java应用程序,它能够通过网络形式在网站上进行授权,然后做一些小工作人员(比如告诉我有多少新消息等等)出于某些原因我没有写过来图API。这段代码适用于大约一年。 今天我发现了一些新问题。当我尝试通过网络表单进行授权时,它只是以“浏览器未启用Cookie。”请在您的浏览器偏好设置中启用Cookie来继续。

以下是代码:

WebClient webClient = new WebClient(BrowserVersion.CHROME);
WebClientOptions webClientOptions = webClient.getOptions();
webClientOptions.setJavaScriptEnabled(true);
webClientOptions.setRedirectEnabled(true);
webClientOptions.setCssEnabled(false);
webClientOptions.setThrowExceptionOnScriptError(false);

HtmlPage loginPage = wc.getPage('https://www.facebook.com/login.php')
HtmlForm loginForm = loginPage.getElementById('login_form')
def loginField = loginForm.getInputByName('email')
loginField.type(login)
def passwordField = loginForm.getInputByName('pass')
passwordField.type(password)
def loginButton = loginForm.getInputByName("login")
HtmlPage fbPage = loginButton.click()

我尝试了一些方法,例如在Chrome调试模式下获取Cookie并将它们直接插入到CookieManager中,但它没有帮助。

我如何通过授权以及可能出现的问题?

1 个答案:

答案 0 :(得分:0)

所以,这完全是因为lib不兼容。 我检查了我的流量,发现我的所有请求都没有包含任何Cookie。 之前我已经为我的应用程序的另一部分更新了一些httpclient库的版本,最后它创建了一些不好的情况:旧版本的WebClient部分中的cookie,createn并没有一些新的httpclient库需要的attrs。因此,通过BasicDomainCheck进行匹配检查失败。

答案是更新所有库。完全是我的错。