No message available при авторизации через Яндекс

Я делаю авторизация через Яндекс в Spring. Вот мой код:

 @CrossOrigin
    @RequestMapping(value = "/goYandex", method = RequestMethod.GET)
    // @ResponseBody
    public void autorithationYandex(@RequestParam(value = "code", required = true) String code,
                                     /* HttpSession session,*/
                                    Authentication authentication,
                                    HttpServletRequest req,
                                    HttpServletResponse redirectResponse
    ) throws IOException {


        String urlCabinet = /*methodHostName()+":"+vPort+*/"/";


        RestTemplate restTemplate = new RestTemplate();

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);


        MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
        map.add("grant_type", "authorization_code");
        map.add("code", code);
        map.add("client_id", "id");
        map.add("client_secret", "secret");

        HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<>(map, headers);

        ResponseEntity<String> response =
                restTemplate.exchange("https://oauth.yandex.ru/token",
                        HttpMethod.POST,
                        entity,
                        String.class);


        String strResponse = response.getBody().toString();
        ObjectMapper mapper = new ObjectMapper();
        JsonToken jt = mapper.readValue(strResponse, JsonToken.class);


        String token = jt.getAccess_token();
        String url2 = "https://login.yandex.ru/info?format=json&oauth_token=" + token;


// create an instance of RestTemplate

        RestTemplate restTemplate2 = new RestTemplate();

// make an HTTP GET request
        JsonUserInformation response2 = restTemplate.getForObject(url2, JsonUserInformation.class);


        String firstName = response2.getFirst_name();
        String secondName = response2.getLast_name();
        String Email = response2.getDefault_email();
        String Photo = response2.getDefault_avatar_id();
        String Login = response2.getLogin();
        Long External_ID = response2.getId();


        User user = new User();
        user.setFirstName(firstName);
        user.setSecondName(secondName);
        user.setEmail(Email);
        user.setLogin(Login);
        user.setExternalId(External_ID);
        user.setActive(true);

        Role role=new Role() ;


       // role.addUser(user);



        User searchUser=usersRepository.findByLogin(Login);

        if (searchUser == null)
        {

            role = rolesRepository.findUserRole();

        }

        if (searchUser != null)
        {
            role=searchUser.getRole();

        }

        user.setRole(role);


        if (searchUser == null)

        {
            usersRepository.save(user);

        }



        MyUserPrincipal myUserPrincipal = new MyUserPrincipal(user);


        Authentication auth = new UsernamePasswordAuthenticationToken(myUserPrincipal, null, myUserPrincipal.getAuthorities());

        SecurityContext securityContext = SecurityContextHolder.getContext();
        securityContext.setAuthentication(auth);


        HttpSession session = req.getSession(true);
        session.setAttribute("SPRING_SECURITY_CONTEXT", securityContext);


        redirectResponse.sendRedirect(urlCabinet);

    }

Когда я запускаю этот код на localhost всё работает нормально. Но когда я пытаюсь авторизоваться через Яндекс на heroku. Мне выдаёт следующее:

введите сюда описание изображения

Endpoint на Яндексе я поменял на url своего приложения на хироку. Подскажите с чем может быть связана данная проблема.


Ответы (0 шт):