2014-07-08 4 views
0

이 코드는 사용자를위한 코드입니다. 여러 사용자가이 방법을 찾고 있습니다.웹 서버에서 사용자 세션을 저장할 수 있습니까?

제발, 내게 몇 가지 조언을주십시오.

배치 작업을 실행하려면 일부 변수 (is_authorized, requestToken 및 accessToken)를 제거해야한다는 것을 알고 있습니다. spring-social-tumblr (github)을 사용하려고했지만 ConnectionRepository를 사용하는 것이 쉽지 않았습니다. 그래서 푯말을 사용하려고했습니다.

표지판으로 서명 한 후 다중 사용자 용 사용자 액세스 토큰을 설정하려면 어떻게해야합니까?

OAuthConsumer 클래스를 사용하는 것이 맞습니까? 나는 봄 사회 텀블러를 (그것이 지역 사회가 주도하는 프로젝트의) 사용하지 않는 한 비록

@Controller 
public class TumblrProfileController { 
    private OAuthService service; 
    private Token requestToken; //should be removed for multiuser 
    private Token accessToken; // same above 

    private static final String PROTECTED_RESOURCE_URL = "http://api.tumblr.com/v2/user/info"; 

    @Autowired 
    private JobLauncher jobLauncher; 

    @Autowired 
    private Job job; 

    @Inject 
    private ConnectionRepository connectionRepository; 
    Logger log = LoggerFactory.getLogger(this.getClass()); 
    private boolean is_authorized = false; 



    @RequestMapping(value = "/tumblr/webrequest", method = RequestMethod.GET) 
    public String home(OAuthConsumer user, Model model) { 



     final String PROTECTED_RESOURCE_URL = "http://api.tumblr.com/v2/user/info"; 
     service = new ServiceBuilder().provider(TumblrApi.class).apiKey("clientKey")     .apiSecret("secretKey").callback("http://localhost:8080/pen/tumblr/login").build(); 

     log.info("Fetching the Request Token..."); 

     // Obtain the Request Token 
     requestToken = service.getRequestToken(); 
     log.info("Now go and authorize Scribe here:"); 
     String redirectUrl = service.getAuthorizationUrl(requestToken); 
     log.info(redirectUrl); 
     return "redirect:" + redirectUrl; 
    } 

    @RequestMapping(value = "/tumblr/login", method = RequestMethod.GET) 
    public String login(@RequestParam(required = false) final String oauth_verifier) { 
     Verifier verifier = new Verifier(oauth_verifier); 

     // Trade the Request Token and Verfier for the Access Token 
     log.info("Trading the Request Token for an Access Token..."); 
     accessToken = service.getAccessToken(requestToken, verifier); 
     log.info("Got the Access Token!"); 
     log.info("(if your curious it looks like this: " + accessToken + ")"); 
     // Now let's go and ask for a protected resource! 
     log.info("Now we're going to access a protected resource..."); 
     OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL); 
     service.signRequest(accessToken, request); 
     Response response = request.send(); 
     log.info("Got it! Lets see what we found..."); 
     log.info(response.getBody()); 
     log.info("Thats it man! Go and build something awesome with Scribe! :)"); 
     run(); 
     is_authorized = true; 
     return "tumblr/feed"; 
    } 
    public void run() { 

     try { 
      if(! is_authorized) return; 

      OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL); 
      service.signRequest(accessToken, request); 
      Response response = request.send(); 
      log.info("[2nd Call ]Got it! Lets see what we found..."); 
      log.info(response.getBody()); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 
+0

친애하는 편집기. '소스 코드'를 수정하지 마십시오. 그것은 또 다른 질문을 할 수 있습니다. – user3139530

답변

0

, 과정은 페이스 북이나 트위터와 함께 봄 사회를 사용하는 것보다 다른 많은 (또는)해서는 안됩니다.

이 코드에서는 너무 많은 작업을 수행하고 있습니다. 권한 부여를 위해 Tumblr으로 리디렉션하고 리디렉션을 처리하여 액세스 토큰에 대한 요청 토큰 및 검증자를 교환해야하는 경우가 발생합니다. 분명히, 그런 것들은 끝내야 만합니다. 그러나 스프링 사회와 함께라면 은 그러한 일을해야만합니다. ConnectController가 그 것이다. ConnectController는이 모든 것을 처리하고 연결을 생성하고 지속하며 OAuth를 직접 사용하지 않아도됩니다. 또한 여러 사용자와 함께 작업해도 문제가 없습니다.

스프링 소셜 쇼케이스의 예가 https://github.com/spring-projects/spring-social-samples/tree/master/spring-social-showcase인데 어떻게 진행되는지 확인하는 것이 좋습니다. 이 예는 Facebook, Twitter 및 LinkedIn과 연결되지만 실제로 동일한 방식으로 Tumblr에 연결할 수없는 이유는 없습니다. Spring Boot와 자동 설정을 활용하는 훨씬 더 간단한 접근법을 위해 https://github.com/spring-projects/spring-social-samples/tree/master/spring-social-showcase-boot을 볼 수도 있습니다. 그러나 Spring Boot에는 Tumblr에 대한 자동 구성이 없으므로 수동 구성이 필요합니다.

+0

감사합니다. 배치 작업을 위해 세션을 저장하려고했습니다. 두 가지 문제가 있습니다. 하나는 social tumblr이 spring-social-showcase-xml과 일치하지 않는다는 것입니다. 심지어 jsp 뷰 파일과 인터셉터를 페이스 북과 동일하게 만듭니다. 그냥 "social_authorization_error"를 반환합니다. – user3139530

+0

소셜 프레임 워크에 대한 작업 덕분에 Connection Contoller를 원본 소스와 함께 사용하려고합니다. 나는이 일을 마친 후에 자기 해결책을 게시 할 것이다. – user3139530

관련 문제