Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用Facebook的API、MVC和Java发布消息_Java_Api_Jsp_Facebook Graph Api_Model View Controller - Fatal编程技术网

无法使用Facebook的API、MVC和Java发布消息

无法使用Facebook的API、MVC和Java发布消息,java,api,jsp,facebook-graph-api,model-view-controller,Java,Api,Jsp,Facebook Graph Api,Model View Controller,我试图使用facebookapi发布一条消息来分享我正在制作的一个页面,作为一个学习使用API的项目。 我遇到了以下问题 我试图发帖,但被重定向到facebook,在那里我接受了一系列许可,然后我被重定向到url MyUrl/oauth2callback/facebook?code=一个非常大的代码,并得到一个404 Not Found错误 我不确定问题出在哪里,在过去的3天里我一直在努力寻找,以下是我正在使用的资源: import org.restlet.resource.ClientReso

我试图使用facebookapi发布一条消息来分享我正在制作的一个页面,作为一个学习使用API的项目。 我遇到了以下问题

我试图发帖,但被重定向到facebook,在那里我接受了一系列许可,然后我被重定向到url MyUrl/oauth2callback/facebook?code=一个非常大的代码,并得到一个404 Not Found错误

我不确定问题出在哪里,在过去的3天里我一直在努力寻找,以下是我正在使用的资源:

import org.restlet.resource.ClientResource;

public class FacebookPostResource {
private String uri = "https://graph.facebook.com/me/feed";
private String access_token = null;


public FacebookPostResource(String access_token) {
    this.access_token = access_token;
}

public boolean publishPost(String message){
    String normalizedMessage=message.replace(' ', '+');
    ClientResource cr=new ClientResource(uri+"?access_token="+access_token);
    cr.post("message="+normalizedMessage);
    return true;
}
}
这是控制器:

public class FacebookPostController extends HttpServlet {
/**
 * 
 */
private static final long serialVersionUID = -6818025976353856770L;
private static final Logger log = 
Logger.getLogger(FacebookPostController.class.getName());


public void doGet(HttpServletRequest req, HttpServletResponse resp) throws 
IOException,ServletException {
    String accessToken=(String)req.getSession().getAttribute("Facebook- 
token");
    if(accessToken!=null && !"".equals(accessToken)){
        FacebookPostResource fbResource=new 
FacebookPostResource(accessToken);
        fbResource.publishPost(req.getParameter("message"));
        req.getRequestDispatcher("/").forward(req,resp);
    }else{
        log.info("Trying to acces to Facebook without an acces token, 
redirecting to OAuth servlet");

req.getRequestDispatcher("/AuthController/Facebook").forward(req,resp);
    }
}

public void doPost(HttpServletRequest req, HttpServletResponse resp) throws 
IOException,ServletException {
    doGet(req,resp);    
}
}
以下是我的作用域配置:

{   
"Facebook":{
    "tokenUrl":"https://graph.facebook.com/v2.8/oauth/access_token",
    "clientId":"MyID",
    "clientSecret":"MySecret" ,
    "authorizationFormUrl":"https://www.facebook.com/v2.8/dialog/oauth",
    "scopes":["user_posts", "user_friends"]
}
}
以下是我撰写文章的JSP:

<c:if test='${empty sessionScope["Facebook-token"]}'>
   <c:redirect url = "/AuthController/Facebook"/>
</c:if>

<h1>Publicar Post en Facebook</h1>
<div class="container">

    <p class="message"></p>

    <form action="/facebookPostCreation" method="post">

        Mensaje: <textarea name="message"></textarea>
        <br>
        <div class="bottom_links">
            <button type="submit" class="button">Publicar en 
Facebook</button>
            <button type="button" 
onClick="javascript:window.location.href='index.html'" 
class="button">Cancel</button>
        </div>
    </form>
</div>
最后是我的web.xml

...
<servlet>        
<servlet-name>FacebookPostCreation</servlet-name>
<servlet-class>aiss.controller.FacebookPostController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FacebookPostCreation</servlet-name>
 <url-pattern>/facebookPostCreation</url-pattern>
</servlet-mapping>

<servlet>
<description></description>
<display-name>FacebookAuthController</display-name>
<servlet-name>FacebookAuthController</servlet-name>
<servlet-class>aiss.controller.oauth.GenericAuthController</servlet-class>
<init-param>
    <param-name>provider</param-name>
    <param-value>Facebook</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>FacebookAuthController</servlet-name>
<url-pattern>/AuthController/Facebook</url-pattern>
</servlet-mapping>

<servlet>
<description></description>
<display-name>FacebookOAuth2Callback</display-name>
<servlet-name>FacebookOAuth2Callback</servlet-name>
<servlet-class>aiss.controller.oauth.OAuth2Callback</servlet-class>
<init-param>
    <param-name>provider</param-name>
    <param-value>Facebook</param-value>
</init-param>
<init-param>
    <param-name>onSuccess</param-name>
    <param-value>redirect:/facebookFriendsListing</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>FacebookOAuth2Callback</servlet-name>
<url-pattern>/OAuth2Callback/Facebook</url-pattern>
</servlet-mapping>
尝试使用我的代码

使用Debuger.java进行测试。 我使用图形API

我很欣赏您的代码,但我认为它不在MVC中,我甚至无法通过查看您的代码找到如何发布。我想要的是找出为什么我的代码不起作用,我在哪里失败了。如果你有一个MVC中的发布示例或其他东西,它会更好。“并得到一个404未找到错误”-这就是你要修复的,然后…你需要正确设置路由以处理此URL,并从中获取代码值并将其交换为访问令牌。