使用oAuth登录Twitter
我正试图在我的网站上添加使用Twitter登录的功能,但我就是无法让它正常工作。我正在使用twitter4j api。在twitter4j站点中,他们有一个示例代码,精确地演示了登录工作流。我试图使用这段代码,但在某个特定步骤中它不起作用(至少对我来说) 我有一个LoginServlet,它可以重定向到twitter验证页面,用户可以在该页面上授予对我的应用程序的访问权。这是doGet代码:使用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
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对象总是空的
我遵循的示例与代码示例中的示例完全相同,因此我希望它能够正常工作
任何帮助都将不胜感激
提前谢谢