简体   繁体   English

使用facebook获取facebook好友 java api

[英]Fetching facebook friends by using facebook java api

My task is something like this:-我的任务是这样的:-

1) Make a sucessful login from my app and retrive the name of friends of user 2)Display all friends on a web page(html), each friend have a correspoing cheakboxes.(list view) 3)We should be able tp post a messege on selected friends 4)A submit/sent wall button. 1)从我的应用程序成功登录并检索用户朋友的名字 2)在 web 页面(html)上显示所有朋友,每个朋友都有一个相应的 cheakboxes。(列表视图) 3)我们应该能够 tp 发布一个向选定的朋友发送消息 4) 提交/发送墙按钮。

So i decided to write an sevlet to make a request(foe login) and retreive friends list, as follows所以我决定写一个 sevlet 来发出请求(foe login)和检索好友列表,如下

public class Servletfb extends HttpServlet {
private static final long serialVersionUID = 1L;
private String API_KEY="1c36b59974ca90e4cefaa1f5c8e18edf";
private String SECRET_KEY="77f2d4df446ac8ae8b35b008da3d6070";

/**
 * Default constructor. 
 */
public Servletfb() {
    // TODO Auto-generated constructor stub
}

/**
 * @see Servlet#init(ServletConfig)
 */
public void init(ServletConfig config) throws ServletException {
    // TODO Auto-generated method stub

      IFacebookRestClient client = new FacebookXmlRestClient(API_KEY,
                    SECRET_KEY);

            try {
                String token = client.auth_createToken();
                String url = "http://www.facebook.com/login.php?api_key=" + API_KEY
                        + "&v=1.0" + "&auth_token=" + token;
                System.out.println(url);
                Runtime.getRuntime().exec("explorer \"" + url + "\""); 

                System.out.println("Use browser to login then press return");
                System.in.read();

                String session = client.auth_getSession(token);
                System.out.println("Session key is " + session);

                client.friends_get();

            } catch (FacebookException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

}

but i got a exception something like但我有一个例外,比如

javax.servlet.ServletException: Error instantiating servlet class com.vibhor.Servletfb
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)

I am using Tomcat Server, and face book java 3.0.2 api我正在使用 Tomcat 服务器和面子书 java 3.0.2 api

as i mentioned my requirement, what would be best approach to achive this, since i am stuck on very intial phase??正如我提到的我的要求,实现这一目标的最佳方法是什么,因为我还停留在非常初始的阶段? any help would be appriciated...任何帮助都会被应用...

{EDIT} I put the code into doPost() and the stack trace is:- {EDIT} 我将代码放入 doPost() 中,堆栈跟踪是:-

java.lang.NoClassDefFoundError: com/google/code/facebookapi/FacebookException
at java.lang.Class.getDeclaredConstructors0(Native Method)
na.at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:255)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3709)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4356)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.ClassNotFoundException:      com.google.code.facebookapi.FacebookException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1360)
at org.apache.cataliloader.WebappClassLoader.loadClass(WebappClassLoader.java:1206)

[EDIT] [编辑]

OK... it seems that it doesn't working, so i switched to facebook rest api, and write something like this:好吧。。。好像不行,所以我换成facebook rest api,写了这样的:

public static void main(String[] args)
{

    FacebookClient facebookClient = new DefaultFacebookClient(args[0]);
User user = facebookClient.fetchObject("me", User.class);
System.out.println("User name: " + user.getName());
Connection<User> myFriends = facebookClient.fetchConnection("me/friends",    User.class);
System.out.println("Count of my friends: " + myFriends.getData().size());
              System.out.println(myFriends.toString());
}

and my output is the list of my friends in json form:我的 output 是 json 表格中的朋友列表:

INFO: Facebook responded with HTTP status code 200 and response body: {"data":  [{"name":"Wasim Sama","id":"550332915"},{"name":"Ujjwal Mishra","id":"599310869"},{"name":"Rj Priyanka","id":"764454678"},{"name":"Paras Arora","id":"778875857"},{"name":"Harshit Makkar","id":"1012133181"},{"name":"Sudhanshu Shukla","id":"1019487229"},{"name":"Vikas Jain","id":"1023819462"},{"name":"Vijay Boregowda","id":"1039516000"},{"name":"Tulika Gera","id":"1097057138"},{"name":"Deepak Kumar R","id":"1132446570"},{"name":"Nitin Goyal","id":"1247507205"},{"name":"Romil Choudaha","id":"1447479935"},{"name":"Saumil Gupta","id":"1501336418"},{"name":"Vebhav Gupta","id":"1507248199"},{"name":"Ashish Vimal","id":"1508694554"},{"name":"Utkarsh Singh","id":"1574203311"},{"name":"Varun Kumar","id":"1623342038"},{"name":"Pradeep Kumar Krishnia","id":"1632769647"},{"name":"Girish Grover","id":"1647181709"},{"name":"Gaurav Gopalia","id":"1661547047"},{"name":"Rajendra Kasana","id":"1664287122"},{"name":"Avdhesh Dubey","id":"1794517002"},{"name":"Shivendra Mathur","id":"1835574934"},{"name":"Vasu Jain","id":"100000009957578"},{"name":"Punit Agrawal","id":"100000118068889"},{"name":"Ramakant Jaiman","id":"100000155434269"},{"name":"Ankit Sharma","id":"100000193433562"},{"name":"Anuj Jain","id":"100000489571784"},{"name":"Camille Ali","id":"100000603236882"},{"name":"Ankur Sharma","id":"100000702407825"},{"name":"Ashutosh Kumar","id":"100000705998842"},{"name":"Prarit Gupta","id":"100000747266879"},{"name":"Amit Gupta","id":"100000781280458"},{"name":"Govind Sharma","id":"100000819234210"},{"name":"Vijay Saini","id":"100000872004792"},{"name":"Rahul Kumar","id":"100001055753094"},{"name":"Krishan Agarwal","id":"100001091775590"},{"name":"Vaibhav Singh","id":"100001147539787"},{"name":"Arvind Kumar Singh","id":"100001492873242"},{"name":"Rajendra Gupta","id":"100001502173655"},{"name":"Ajay Kumar Tiwari","id":"100001520262873"},{"name":"Alok Rai","id":"100001561421479"}]}

how to retrieve the names out of json object and display them on html page, since i have no experience with working json, it seems bit tricky to me...any help??如何从 json object 中检索名称并将它们显示在 html 页面上,因为我没有使用 json 的经验,这对我来说似乎有点棘手......有帮助吗?

Though the question is very old.虽然这个问题很老了。 I am writing here for users who are landing here for a solution to fetch Facebook friends using Java.我在这里为登陆这里的用户写下使用 Java 获取 Facebook 朋友的解决方案。

If you making a new FB App, Facebook new API Version 2.0 do not allow apps to get all Facebook friends with default access right ie public_profile.如果你制作一个新的 FB 应用程序, Facebook 新的 API 版本 2.0 不允许应用程序获得所有 Facebook 具有默认访问权限的朋友,即 public_profile。 In version 1, it was possible.在版本 1 中,这是可能的。 Now Facebook allows to fetch only friends who are using the app already, more precisely who have already logged-in with Facebook Login dialog on you website.现在 Facebook 只允许获取已经在使用该应用程序的朋友,更准确地说,是那些已经使用您网站上的 Facebook 登录对话框登录的朋友。 For that, you need to specify user_friends permission in link that opens FB Login dialog box.为此,您需要在打开 FB 登录对话框的链接中指定 user_friends 权限。 (There might exist some extended permission to fetch all friends.) (可能存在一些扩展权限来获取所有朋友。)

To see how to fetch only those FB friends who are using your app using Java/Servlets, here is an article that explains it: https://www.bitspedia.com/2012/01/how-to-get-facebook-friends-list-in.html要查看如何使用 Java/Servlet 仅获取那些正在使用您的应用程序的 FB 朋友,这里有一篇文章对此进行了解释: https://www.bitspedia.com/2012/01/how-to-get-facebook-friends -list-in.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM