[英]Fail when Facebook api request using Facebook4j
我正在尝试使用Facebook4J开发Facebook API。 从Facebook获得access_token作为流是成功的。
@RequestMapping(value="biztopia.facebook.redirectLogin.do")
public void redirectLogin(ModelMap model, HttpServletRequest request, HttpServletResponse response, HttpSession session) {
String code = request.getParameter("code");
Facebook facebook = (Facebook) request.getSession().getAttribute("facebook");
String oauthCode = request.getParameter("code");
try {
facebook.getOAuthAccessToken(oauthCode);
AccessToken token = facebook.getOAuthAccessToken();
response.sendRedirect("biztopia.facebook.requestUserInfo.do");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@RequestMapping(value="biztopia.facebook.requestUserInfo.do")
public void requestUserInfo(ModelMap model, HttpServletRequest request, HttpServletResponse response, HttpSession session) {
Facebook facebook = (Facebook) request.getSession().getAttribute("facebook");
try {
User user = facebook.getMe();
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
接收到的兴奋消息作为流
FacebookException {statusCode = 400,response = HttpResponse {statusCode = 400,responseAsString ='{“ error”:{“ message”:“来自服务器的API调用需要一个appsecret_proof参数”,“ type”:“ GraphMethodException”,“代码” :100}}',is=sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@446f4515,streamConsumed = true},errorType ='GraphMethodException',errorMessage ='来自服务器的API调用需要一个appsecret_proof参数',errorCode = 100,errorSubcode = -1},位于facebook4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:189),位于facebook4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:65),位于facebook4j.internal.http.HttpClientWrapper .get(HttpClientWrapper.java:93)在facebook4j.FacebookImpl.get(FacebookImpl.java:2431)在facebook4j.FacebookImpl.getMe(FacebookImpl.java:105)在facebook4j.FacebookImpl.getMe(FacebookImpl.java:101)在biztopia .facebook.web.FacebookController.requestUserInfo(FacebookController.java:292)
我找到了解决方案。 也就是说,在调用API处将appsecret_proof参数附加为“ http://graph.facebook.com/me?access_token= {access_token值} $ appsecret_proof = {appsecret_proof值}”。
如果您不想追加appsecret_proof参数,则可以在应用程序管理站点上将设置更改为“不使用appsecret_proof”参数。 管理站点菜单设置为>高级>服务器API调用需要AppSecret证明->设置为禁用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.