/**
   * 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";
  }