Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过java URL连接登录facebook_Java_Facebook_Facebook Graph Api - Fatal编程技术网

通过java URL连接登录facebook

通过java URL连接登录facebook,java,facebook,facebook-graph-api,Java,Facebook,Facebook Graph Api,我正在编写一个java应用程序,我希望它能够登录并进入我的墙(只有我的墙)和一些小组,看看是否有新的发布。这不是生产代码。这是给我的。问题是我不知道如何在使用URLConnection时登录。如果你没有登录,你可以看到打开的facebook群组。但是你必须登录才能看到关闭的组,我也希望能够看到这些组。这不是一个web应用程序。这仅仅是建立一个连接,下拉html,然后通过它进行解析 我的朋友说facebook有一个OAuth的东西来实现这一目的,但在阅读了互联网之后,它似乎是用来登录你的应用程序或

我正在编写一个java应用程序,我希望它能够登录并进入我的墙(只有我的墙)和一些小组,看看是否有新的发布。这不是生产代码。这是给我的。问题是我不知道如何在使用URLConnection时登录。如果你没有登录,你可以看到打开的facebook群组。但是你必须登录才能看到关闭的组,我也希望能够看到这些组。这不是一个web应用程序。这仅仅是建立一个连接,下拉html,然后通过它进行解析

我的朋友说facebook有一个OAuth的东西来实现这一目的,但在阅读了互联网之后,它似乎是用来登录你的应用程序或登录客户机并验证它们,也许还可以发布到他们的墙上。但也许我只是用了一种完全错误的方法,应该使用oauth和graph api或其他什么

无论如何,我尝试建立一个URLConnection并向facebook发出请求,保存所有cookies,然后尝试构建一个新的连接,使用所有的头等等来登录facebook,但它知道这不是一个真正的用户,而是一个自动程序,无法工作。有人知道我怎样才能得到认证吗

String cookies = "";
URL myUrl = new URL("https://www.facebook.com/");
URLConnection urlConn = myUrl.openConnection();
urlConn.connect();
String headerName=null;
for (int i=1; (headerName = urlConn.getHeaderFieldKey(i))!=null; i++) {
    if (headerName.equals("Set-Cookie")) {                  
       String cookie = urlConn.getHeaderField(i);    
       cookie = cookie.substring(0, cookie.indexOf(";"));
       String cookieName = cookie.substring(0, cookie.indexOf("="));
       String cookieValue = cookie.substring(cookie.indexOf("=") + 1, cookie.length());
       cookies = cookies+cookieName+"="+cookieValue+"; ";
       cookieNameList.add(cookieValue);
    }
}    
URL url = new URL("https://www.facebook.com/login.php?login_attempt=1");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
conn.setRequestProperty("Cookie", cookies);
conn.setRequestProperty("accept-encoding", "gzip,deflate,sdch");
conn.setRequestProperty("accept-language", "en-US,en;q=0.8");
conn.setRequestProperty("cache-control", "max-age=0");
conn.setRequestProperty("content-type", "application/x-www-form-urlencoded");
conn.setRequestProperty("accepts-encoding", "gzip,deflate,sdch");
conn.setRequestProperty("accept-encoding", "gzip,deflate,sdch");
conn.setRequestProperty("accept-encoding", "gzip,deflate,sdch");
String query = "lsd=AVpGDi9X&email=xxxxxxxx%40gmail.com&pass=xxxxxxxxx&persistent=1&default_persistent=1&timezone=360&lgnrnd=135940_imAl&lgnjs=1375995581&locale=en_US";
OutputStream output = null;

try {
    output = conn.getOutputStream();
    output.write(query.getBytes("UTF-8"));
} finally {
     if (output != null) try { output.close(); } catch (IOException logOrIgnore) {}
}
try{
  BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
  String line;
  while ((line = rd.readLine()) != null) {
      System.out.println(line);
  }
  rd.close();
}catch(Exception e){
    System.out.print("URL BROKE!");
}

刚开始的时候有点困惑。我假设您不想将fb密码输入网页的过程自动化。在这种情况下,您确实希望使用OAuth授权您的应用程序访问您的fb帐户,而无需您的应用程序知道您的fb密码。在这种情况下,您可以从这里开始:


要使其正常工作,您的程序必须能够显示浏览器窗口,或者指示用户访问验证URL并将令牌结果提供回您的程序

您必须添加以下行:

conn.setRequestMethod("post");

基本身份验证可以在这里执行您想要的操作。apachecommonclient是很好的api。我很久以前就试过了

我更新了一下描述。这不是一个web应用程序或任何东西这只是一个小java程序,我正在从我的计算机上运行。我正在尝试硬编码在我的用户名和密码,这是罚款。我只是想从facebook的网页上搜刮一些关键词。