Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
使用oAuth登录Twitter_Twitter_Oauth_Access Token_Twitter4j_Sign - Fatal编程技术网

使用oAuth登录Twitter

使用oAuth登录Twitter,twitter,oauth,access-token,twitter4j,sign,Twitter,Oauth,Access Token,Twitter4j,Sign,我正试图在我的网站上添加使用Twitter登录的功能,但我就是无法让它正常工作。我正在使用twitter4j api。在twitter4j站点中,他们有一个示例代码,精确地演示了登录工作流。我试图使用这段代码,但在某个特定步骤中它不起作用(至少对我来说) 我有一个LoginServlet,它可以重定向到twitter验证页面,用户可以在该页面上授予对我的应用程序的访问权。这是doGet代码: protected void doGet(HttpServletRequest request, Htt

我正试图在我的网站上添加使用Twitter登录的功能,但我就是无法让它正常工作。我正在使用twitter4j api。在twitter4j站点中,他们有一个示例代码,精确地演示了登录工作流。我试图使用这段代码,但在某个特定步骤中它不起作用(至少对我来说)

我有一个LoginServlet,它可以重定向到twitter验证页面,用户可以在该页面上授予对我的应用程序的访问权。这是doGet代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    TwitterFactory twitterFac = new TwitterFactory();
    Twitter twitter = twitterFac.getInstance();
    twitter.setOAuthConsumer("<consumer_key>", "<consumer_secret>");

    request.getSession().setAttribute("twitter", twitter);
    try {
        RequestToken requestToken = twitter.getOAuthRequestToken("http://127.0.0.1:8080/AllMusicWeb/CallbackServlet");
        request.getSession().setAttribute("requestToken", requestToken);
        response.sendRedirect(requestToken.getAuthenticationURL());
    } catch (TwitterException e) {
        throw new ServletException(e);
    }
}
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
TwitterFactory twitterFac=新的TwitterFactory();
Twitter=twitterFac.getInstance();
setOAuthConsumer(“,”);
request.getSession().setAttribute(“twitter”,twitter);
试一试{
RequestToken RequestToken=twitter.getOAuthRequestToken(“http://127.0.0.1:8080/AllMusicWeb/CallbackServlet");
request.getSession().setAttribute(“requestToken”,requestToken);
sendRedirect(requestToken.getAuthenticationURL());
}捕获(twitter异常){
抛出新的ServletException(e);
}
}
如您所见,twitter对象和请求令牌保存在http数据包中(至少我认为那些getSession.setAttribute方法就是这样做的)

然后twitter页面重定向到我的应用程序页面(CallbackServlet)。所有这些都正确执行

然后CallbackServlet具有以下doGet方法:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Twitter twitter = (Twitter) request.getSession().getAttribute("twitter");
    RequestToken requestToken = (RequestToken) request.getSession().getAttribute("requestToken");
    String verifier = request.getParameter("oauth_verifier");
    try {
        twitter.getOAuthAccessToken(requestToken, verifier);
        request.getSession().removeAttribute("requestToken");
    } catch (TwitterException e) {
        throw new ServletException(e);
    }
    response.sendRedirect("<other_page>");
}
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
Twitter=(Twitter)request.getSession().getAttribute(“Twitter”);
RequestToken RequestToken=(RequestToken)request.getSession().getAttribute(“RequestToken”);
字符串验证器=request.getParameter(“oauth_验证器”);
试一试{
getOAuthAccessToken(requestToken,验证器);
request.getSession().removeAttribute(“requestToken”);
}捕获(twitter异常){
抛出新的ServletException(e);
}
响应。发送重定向(“”);
}
CallbackServlet尝试获取保存在LoginServlet中的twitter和requestToken(使用方法getSession().getAttribute())。这就是问题所在:twitter对象总是空的

我遵循的示例与代码示例中的示例完全相同,因此我希望它能够正常工作

任何帮助都将不胜感激

提前谢谢