繁体   English   中英

当使用Facebook4j的Facebook api请求时失败

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM