/**
   * Verifica se o programa já tem acesso a conta do usuario, caso negativo redireciona para pagina,
   * que gera uma autorização.
   *
   * @throws TwitterException
   * @throws IllegalStateException
   */
  @RequestMapping(value = "/verificaAcessoTwitter")
  public String verificaAcessoTwitter(ModelMap modelMap)
      throws IllegalStateException, TwitterException {
    Usuario usuarioAutorizado =
        usuarioService.getUsuarioByLogin(
            SecurityContextHolder.getContext().getAuthentication().getName());
    Twitter twitter = null;
    RequestToken requestToken = null;
    if (usuarioAutorizado.getAutorizacaoTwitter() != null) {
      twitter = new TwitterFactory().getInstance();
      twitter.setOAuthConsumer(
          "bVqAzGbuR5jsOTDstph9XB1dM", "vi9xVqIc1oMQAydQYIVgbo0GvO4XWwPjdhtJpjAUk6yv19vdDO");
      AccessToken accessToken =
          new AccessToken(
              usuarioAutorizado.getAutorizacaoTwitter().getToken(),
              usuarioAutorizado.getAutorizacaoTwitter().getTokenSecret());
      twitter.setOAuthAccessToken(accessToken);
      cadastroIdTwitterAmigos1E2Grau(usuarioAutorizado, twitter);

      return "redirect:/usuario/listar";
    }

    try {
      twitter = new TwitterFactory().getInstance();
      twitter.setOAuthConsumer(
          "bVqAzGbuR5jsOTDstph9XB1dM", "vi9xVqIc1oMQAydQYIVgbo0GvO4XWwPjdhtJpjAUk6yv19vdDO");
      requestToken = twitter.getOAuthRequestToken();
    } catch (TwitterException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    // AccessToken accessToken = null;
    String url = requestToken.getAuthorizationURL();
    // System.out.println(twitter.getId());
    AutorizacaoTwitterRequest autorizacaoTwitterRequest = new AutorizacaoTwitterRequest();
    autorizacaoTwitterRequest.setRequestToken(requestToken);
    autorizacaoTwitterRequest.setTwitter(twitter);
    autorizacaoTwitterRequestService.save(autorizacaoTwitterRequest);
    modelMap.addAttribute("url", url);
    modelMap.addAttribute("id", autorizacaoTwitterRequest.getId());
    modelMap.addAttribute("pin", new Pin());
    return "usuario/autorizacaoTwitter";
  }
  /**
   * Grava a autorização para o programa acessar a conta do twitter gerando um token, tokenSecret.
   */
  @RequestMapping(value = "/{id}/autorizacaoTwitter")
  public String autorizacaoTwitter(
      @PathVariable("id") Integer id, @Valid Pin pin, ModelMap modelMap) {

    AutorizacaoTwitterRequest autorizacaoTwitterRequest =
        autorizacaoTwitterRequestService.find(AutorizacaoTwitterRequest.class, id);
    Usuario usuarioAutorizado =
        usuarioService.getUsuarioByLogin(
            SecurityContextHolder.getContext().getAuthentication().getName());
    Twitter twitter = autorizacaoTwitterRequest.getTwitter();
    RequestToken requestToken = autorizacaoTwitterRequest.getRequestToken();
    AccessToken accessToken = null;

    try {
      if (pin.getPin().length() > 0) {
        System.out.println(pin.getPin());
        accessToken = twitter.getOAuthAccessToken(requestToken, pin.getPin());
      } else {
        accessToken = twitter.getOAuthAccessToken();
      }
    } catch (TwitterException te) {
      if (401 == te.getStatusCode()) {
        System.out.println("Não foi possível obter o token de acesso." + te.getMessage());
      } else {
        te.printStackTrace();
      }
    }

    AutorizacaoTwitter autorizacaoTwitter = new AutorizacaoTwitter();
    autorizacaoTwitter.setId((int) accessToken.getUserId());
    autorizacaoTwitter.setToken(accessToken.getToken());
    autorizacaoTwitter.setTokenSecret(accessToken.getTokenSecret());
    autorizacaoTwitter.setUsuario(usuarioAutorizado);
    autorizacaoTwitterService.save(autorizacaoTwitter);

    usuarioAutorizado.setAutorizacaoTwitter(autorizacaoTwitter);
    usuarioService.update(usuarioAutorizado);

    autorizacaoTwitterRequestService.delete(autorizacaoTwitterRequest);
    modelMap.addAttribute("usuario", usuarioAutorizado);
    return "redirect:/usuario/listar";
  }