我正在使用 Java 和 Spring 开发一个 REST 服务,它连接到 Facebook 并获取一些用户数据,如姓名、姓氏和最重要的:电子邮件。
该服务有一个需要 Facebook uid 和访问令牌的方法,然后通过调用 https://graph.facebook.com/me/?fields=email,id,last_name,name&access_token=XXXXX 并解析来获取用户信息json响应。
问题是有些用户在回复中没有电子邮件。我知道有些 Facebook 用户没有设置电子邮件,因为他们使用电话号码创建了他们的帐户。这不是这里的问题。
当我使用RestTemplate类时,电子邮件不在响应中,但是当我使用Graph API Explorer工具(https://developers.facebook.com/tools/explorer/)时,电子邮件就在那里。
使用 RestTemplate:
RestTemplate rest = new RestTemplate();
String jsonResponse = rest.getForObject("https://graph.facebook.com/me/?fields=" + fields + "&access_token=" + accessToken, String.class);
JSONObject o = JSONObject.fromObject(jsonResponse);
使用 RestTemplate 响应:
{
"id": "xxxxxxxx",
"last_name": "Avila",
"name": "Diego Emanuel Avila"
}
使用 Graph API Explorer 进行响应
{
"id": "xxxxxxxx",
"email": "xxxxxx@gmail.com"
"last_name": "Avila",
"name": "Diego Emanuel Avila"
}
我不知道问题出在 RestTemplate 类中,还是在 Facebook Graph API 中。我不知道是否必须添加标题或类似的东西,才能从 Facebook 获得正确的响应。
在这里寻找答案,我在 facebook API 中偶然发现了这个间歇性丢失的电子邮件地址,但这与我的问题不同。
我希望我说清楚了,你可以帮助我解决这个问题。
非常感谢!