【问题标题】:Fail when Facebook api request using Facebook4j使用 Facebook4j 请求 Facebook api 时失败
【发布时间】:2013-11-12 11:37:12
【问题描述】:

我正在尝试使用 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)

【问题讨论】:

    标签: java facebook access-token


    【解决方案1】:

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

    如果您不想附加 appsecret_proof 参数,那么您可以在您的应用管理网站上将设置更改为不使用 appsecret_proof 参数。 管理站点菜单正在设置>高级>需要 AppSecret Proof for Server API 调用 -> 设置为禁用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 2017-05-24
      • 1970-01-01
      相关资源
      最近更新 更多