Как справиться с обновлением страницы в интеграции с Springboot Facebook? - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь выполнить вход на основе Facebook. Все работает, однако я не знаю, как обрабатывать случай refre sh, когда пользователь перенаправляется на страницу, и пользователь нажимает на refre sh, когда он запускает другой запрос, как мне это обработать?

package com.example.demo.controllers;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.RedirectView;

import com.example.demo.FbService.FbService;

@Controller
@RequestMapping("/")
public class FbController {

    @Autowired
    private FbService facebookService;

    @GetMapping("/createFacebookAuthorization")
    public RedirectView createFacebookAuthorization(){
        return new RedirectView(facebookService.createFacebookAuthorizationURL());
    }

    @GetMapping("/facebook")
    public String createFacebookAccessToken(@RequestParam("code") String code){
        String accToken=facebookService.createFacebookAccessToken(code);
        Object obj=facebookService.getName(accToken);
        return "details";
    }

    @RequestMapping("/")
    public ModelAndView firstPage() {
        return new ModelAndView("welcome");
    }

}
package com.example.demo.FbService;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.social.facebook.api.Facebook;
import org.springframework.social.facebook.api.impl.FacebookTemplate;
import org.springframework.social.facebook.connect.FacebookConnectionFactory;
import org.springframework.social.oauth2.AccessGrant;
import org.springframework.social.oauth2.OAuth2Operations;
import org.springframework.social.oauth2.OAuth2Parameters;
import org.springframework.stereotype.Service;

@Service
public class FbService {
     @Value("${spring.social.facebook.appId}")
     String facebookAppId;

     @Value("${spring.social.facebook.appSecret}")
     String facebookSecret;

     public String createFacebookAuthorizationURL(){
            FacebookConnectionFactory connectionFactory = new FacebookConnectionFactory(facebookAppId, facebookSecret);
            OAuth2Operations oauthOperations = connectionFactory.getOAuthOperations();
            OAuth2Parameters params = new OAuth2Parameters();
            params.setRedirectUri("http://localhost:8080/facebook");
            params.setScope("public_profile,email");
            return oauthOperations.buildAuthorizeUrl(params);
        }

     public String createFacebookAccessToken(String code) {
            FacebookConnectionFactory connectionFactory = new FacebookConnectionFactory(facebookAppId, facebookSecret);
            AccessGrant accessGrant = connectionFactory.getOAuthOperations().exchangeForAccess(code, "http://localhost:8080/facebook", null);
            return  accessGrant.getAccessToken();
        }

     public Object getName(String accessToken) {
            Facebook facebook = new FacebookTemplate(accessToken);
            String[] fields = {"id", "name","email"};
            return facebook.fetchObject("me", String.class, fields);
        }
}

подробности. html

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Login</title>

</head>
<body>
<div style="border: 1px solid #ccc; padding: 5px; margin-bottom: 20px;">

   Welcome  

</div>
</body>
</html>


<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Login</title>
<meta name="description" content="" />
<meta name="viewport" content="width=device-width" />
<base href="/" />
<link rel="stylesheet" type="text/css" href="/webjars/bootstrap/css/bootstrap.min.css" />
<link rel="stylesheet" href="/webjars/font-awesome/css/font-awesome.min.css"></link>
</head>

<body>

<div style="border: 1px solid #ccc; padding: 5px; margin-bottom: 20px;">
    <a href="/createFacebookAuthorization">Validate using Facebook</a> |  
</div>

</body>
</html>

Стартовая страница, которая отправляет запрос enter image description here

перенаправленная страница, которая работает нормально enter image description here Ошибка, которая появляется после refre sh, делается enter image description here

Я знаю, почему это происходит, но не знать, что было бы решением, чтобы предотвратить это. Любая помощь будет оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...