WEB开发网
开发学院软件开发Java 通过 OAuth 访问社会网络 Web 站点,第 2 部分: 构... 阅读

通过 OAuth 访问社会网络 Web 站点,第 2 部分: 构建支持 OAuth 的 Web Twitter 客户端

 2010-05-21 00:00:00 来源:WEB开发网   
核心提示: 查看原图(大图)doPost(...) 方法的其他内容如 清单 2 所示,此部分代码响应 图 3 显示的 3 个按钮和用户上次更新末部的删除链接,通过 OAuth 访问社会网络 Web 站点,第 2 部分: 构建支持 OAuth 的 Web Twitter 客户端(5),有了这 3 个按钮和 1

查看原图(大图)

doPost(...) 方法的其他内容如 清单 2 所示。此部分代码响应 图 3 显示的 3 个按钮和用户上次更新末部的删除链接。有了这 3 个按钮和 1 个删除链接,用户可以删除其上一次更新,更新其状态并查看好友的时间轴。可对此应用程序应用 Ajax (例如,使用 GWT)以改进代码,从而改善用户体验。我将此作为您的家庭作业。图 4 显示了成功进行状态更新之后的屏幕截图。

清单 2. myttwebclient.MyTwitterServlet 支持的操作

protected void doPost(HttpServletRequest request, 
 HttpServletResponse response) throws ServletException, IOException { 
 HttpSession session = request.getSession(); 
 
 // OAuth authentication support 
 ...... 
 
 } else if (ACTION_UPDATE.equals(action)) { 
 logger.debug("Updating Twitter status..."); 
 String status = request.getParameter(PARAM_STATUS); 
 Twitter twitter = (Twitter) session.getAttribute(ATTR_TWITTER); 
 try { 
  Status twitterStatus = twitter.updateStatus(status); 
  logger.debug("Successfully updated the status to [" 
   + twitterStatus.getText() + "]."); 
  // Update last status 
  session.setAttribute(ATTR_LAST_UPDATED_STATUS, twitterStatus 
   .getText() 
   + " " + twitterStatus.getCreatedAt()); 
  session.setAttribute(ATTR_LAST_UPDATED_STATUS_ID, "" 
   + twitterStatus.getId()); 
 
  // Update friends' timelines 
  getFriendsTimelinesAndStoreInSession(session, true); 
 
  // Stay in the update status page 
  logger.debug("Staying in the status update page..."); 
  request.getRequestDispatcher(PAGE_UPDATE_STATUS).forward( 
   request, response); 
 } catch (TwitterException e) { 
  logger.error("Failed to update Twitter status - " 
   + e.getMessage()); 
  throw new ServletException(e); 
 } 
 } else if (ACTION_DELETE.equals(action)) { 
 logger.debug("Deleting Twitter status..."); 
 String strId = (String) session 
  .getAttribute(ATTR_LAST_UPDATED_STATUS_ID); 
 if (strId != null && strId != "") { 
  Twitter twitter = (Twitter) session.getAttribute(ATTR_TWITTER); 
  try { 
  int id = twitter.verifyCredentials().getId(); 
  twitter.destroyStatus(Long.parseLong(strId)); 
  session.removeAttribute(ATTR_LAST_UPDATED_STATUS); 
  session.removeAttribute(ATTR_LAST_UPDATED_STATUS_ID); 
  logger.debug("Last update deleted for Twitter user " + id 
   + " deleted, session record removed"); 
 
  // Get last status and friends' timelines 
  getMyLastStatusAndStoreInSession(session); 
  getFriendsTimelinesAndStoreInSession(session, true); 
  } catch (TwitterException e) { 
  logger.error("Failed to delete Twitter status - " 
   + e.getMessage()); 
  throw new ServletException(e); 
  } 
 } 
 
 // Stay in the update status page 
 logger.debug("Staying in the status update page..."); 
 request.getRequestDispatcher(PAGE_UPDATE_STATUS).forward(request, 
  response); 
 } else if (ACTION_MORE.equals(action)) { 
 // Update friends' timelines 
 getFriendsTimelinesAndStoreInSession(session); 
 
 // Stay in the update status page 
 logger.debug("Staying in the status update page..."); 
 request.getRequestDispatcher(PAGE_UPDATE_STATUS).forward(request, 
  response); 
 } else if (ACTION_LATEST.equals(action)) { 
 // Update friends' latest timelines 
 getFriendsTimelinesAndStoreInSession(session, true); 
 
 // Stay in the update status page 
 logger.debug("Staying in the status update page..."); 
 request.getRequestDispatcher(PAGE_UPDATE_STATUS).forward(request, 
  response); 
 } 
} 


图 4. MyTtWebClient 更新的 Twitter 状态
通过 OAuth 访问社会网络 Web 站点,第 2 部分: 构建支持 OAuth 的 Web Twitter 客户端

查看原图(大图)

我假设现在您已完全了解 MyTtWebClient。如果您想将其部署到 Web 服务器,可能就不再需要回调支持。要禁用回调支持,只需将 WEB-INF/web.xml 中的参数 callbackUrl 设置为一个空字符串即可。但是,记住,您必须为 Twitter 设置正确的回调 URL,以便在成功进行了 OAuth 身份验证后,Twitter 知道应该将用户重定向到哪里。

在您的 Web 应用程序投入使用之前,您可能会意识到应用于 API 调用的 Twitter 限制。例如,REST API 调用的默认速率限制为每小时 150 个请求。幸运的是,Twitter 允许您应用每小时 20,000 个请求。更多信息,请参见 Twitter FAQ。

结束语

在本系列的第 2 部分中,我介绍了如何开发 Twitter Web 客户端 MyTtWebClient。该 Web 应用程序演示了 OAuth 如何与 Web 浏览器进行无缝协作。与 MyTtDesktopClient 相比,我还为 MyTtWebClient 添加了更多功能,包括删除上一次更新和显示好友的时间轴。在第 3 部分,我将演示如何将此 Web Twitter 客户端迁移到 Google App Engine 中。

本文示例源代码或素材下载

上一页  1 2 3 4 5 

Tags:通过 OAuth 访问

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接