java中的Facebook oauth身份验证仅返回用户名和id
我正在尝试通过facebook api和java获取用户详细信息和oauth authenticate user,并能够进行身份验证和重定向到我的主页,但facebook api没有返回电子邮件、生日、好友列表等详细信息,只返回用户名和id,其余详细信息为空。我已经在facebook上注册了我的应用程序,但仍然无法获取其他详细信息,如生日、电子邮件、好友列表、个人资料图片等 代码如下: 这是主菜单类:java中的Facebook oauth身份验证仅返回用户名和id,java,facebook,oauth,Java,Facebook,Oauth,我正在尝试通过facebook api和java获取用户详细信息和oauth authenticate user,并能够进行身份验证和重定向到我的主页,但facebook api没有返回电子邮件、生日、好友列表等详细信息,只返回用户名和id,其余详细信息为空。我已经在facebook上注册了我的应用程序,但仍然无法获取其他详细信息,如生日、电子邮件、好友列表、个人资料图片等 代码如下: 这是主菜单类: public class MainMenu extends HttpServlet {
public class MainMenu extends HttpServlet {
private static final long serialVersionUID = 1L;
private String code="";
public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
String clientId = "XXXXXXXXXXXXXXXXX";
String clientSecret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
//public static final String REDIRECT_URI = "http://localhost:8080/Facebook_Login/fbhome";
Client client = new Client(clientId, clientSecret);
FacebookFactory facebookFactory = new FacebookFactory(client);
String redirectURL = facebookFactory.getRedirectURL("http://localhost:8080/Facebook_Login/fbhome", Display.POPUP, Permission.EMAIL, Permission.OFFLINE_ACCESS);
String code = req.getParameter("code");
OAuthAccessToken accessToken1;
try {
accessToken1 = facebookFactory.getOAuthAccessToken(code, "http://localhost:8080/Facebook_Login/fbhome");
Facebook facebook = facebookFactory.getInstance(accessToken1);
User fbUser = facebook.getCurrentUser();
System.out.println("fbUser"+"====="+fbUser.getName());
ServletOutputStream out = res.getOutputStream();
res.reset();
out.println("<h1>Facebook Login using Java</h1>");
out.println("<h2>Application Main Menu</h2>");
out.println("<div>Welcome "+fbUser.getName());
out.println("<div>Your Religion: "+fbUser.getReligion());
out.println("<div>Your Birthday: "+fbUser.getBirthday());
out.println("<div>Your Gender: "+fbUser.getGender());
out.println("<div>Your Locale: "+fbUser.getLocale());
out.println("<div>Your ID: "+fbUser.getWork());
out.println("<div>Logout: "+"<a href='https://www.facebook.com/logout.php?next="+"http://localhost:8080/Facebook_Login/fbhome&access_token="+accessToken1+"'>Logout"+"</>");
//out.println("<div>Your Education: "+fbUser.home(facebook));
Map<String, String> fbProfile = new HashMap<String, String>();
JSONObject json = new JSONObject(fbUser);
try {
fbProfile.put("id", json.getString("id"));
System.out.println("fbProfile"+fbProfile);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FacebookException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/*out.println("<div>You are "+fbProfileData.get("gender"));
out.flush();*/
}
}
public类主菜单扩展了HttpServlet{
私有静态最终长serialVersionUID=1L;
私有字符串代码=”;
公共无效服务(HttpServletRequest-req、HttpServletResponse-res)
抛出ServletException,IOException{
字符串clientId=“XXXXXXXXXXXXXX”;
字符串clientSecret=“xxxxxxxxxxxxxxxxxxxxxxxx”;
//公共静态最终字符串重定向_URI=”http://localhost:8080/Facebook_Login/fbhome";
客户端=新客户端(clientId,clientSecret);
FacebookFactory FacebookFactory=新的FacebookFactory(客户端);
字符串重定向URL=facebookFactory.getRedirectURL(“http://localhost:8080/Facebook_Login/fbhome“、Display.POPUP、Permission.EMAIL、Permission.OFFLINE\u访问);
字符串代码=req.getParameter(“代码”);
OAuthAccessToken accessToken1;
试一试{
accessToken1=facebookFactory.getOAuthAccessToken(代码,“http://localhost:8080/Facebook_Login/fbhome");
facebookFactory.getInstance(accessToken1);
用户fbUser=facebook.getCurrentUser();
System.out.println(“fbUser”+“==”+fbUser.getName());
ServletOutputStream out=res.getOutputStream();
res.reset();
println(“使用Java登录Facebook”);
out.println(“应用程序主菜单”);
out.println(“欢迎”+fbUser.getName());
out.println(“您的宗教:+fbUser.getreligation());
out.println(“您的生日:+fbUser.getbirth());
out.println(“您的性别:+fbUser.getGender());
println(“您的语言环境:+fbUser.getLocale());
println(“您的ID:+fbUser.getWork());
out.println(“注销:+”
默认情况下,graph API不会返回所有字段,因此我认为您使用的库不允许您请求更多字段
您可以使用控制台进行测试
所以你做错了什么,但是因为你没有告诉我们你在做什么,我们帮不了你现在你可以查看代码了,请建议!
!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Java Facebook Login</title>
</head>
<body style="text-align: center; margin: 0 auto;">
<div
>
<a href="<%=fbConnection.getFBAuthUrl()%>"> <img
style="margin-top: 138px;" src="./img/facebookloginbutton.png" />
</a>
</div>
</body>
</html>
$ fbapi '/v2.8/me'
{
"name": "Yuri Schimke",
"id": "zzzzzz"
}
$ fbapi '/v2.8/me?fields=name,email,birthday,picture&debug=all'
{
"name": "Yuri Schimke",
"email": "www@xxxx.zz",
"birthday": "xx/xx/xxxx",
"picture": {
"data": {
"is_silhouette": false,
"url": "https://scontent.xx.fbcdn.net/v/t1.0-1/p50x50/xxxx.jpg"
}
},
"id": "xxxx",
"__debug__": {}
}