当使用 Facebook4j 请求 Facebook api 时失败



我正在尝试使用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","code":100}}', is=sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@446f4515, streamConsumed=true}, errorType='GraphMethodException', errorMessage='来自服务器的 API 调用需要 appsecret_proof 参数', errorCode=100, errorSubcode=-1} at facebook4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:189) at facebook4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:65) at 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) at biztopia.facebook.web.FacebookController.requestUserInfo(FacebookController.java:292)

我找到了解决方案。即在调用 API 时将参数追加appsecret_proof为 "http://graph.facebook.com/me?access_token={access_token value}$appsecret_proof={appsecret_proof value}。

如果您不想追加appsecret_proof参数,则可以在应用程序管理站点上将设置为不使用 appsecret_proof paameter。管理站点菜单设置为>高级>服务器 API 调用需要 AppSecret 证明 ->设置为禁用。

最新更新