gpt4 book ai didi

java - 使用 spring social 为 Twitter 和 Facebook 创建 OAuth Flow

转载 作者:行者123 更新时间:2023-11-29 08:46:47 24 4
gpt4 key购买 nike

我需要将某些数据从一个请求传输到另一个请求以用于 oauth 工作流程。

@RequestMapping(value = "/connect/twitter", method = RequestMethod.POST)
public RedirectView connectTwitter(HttpServletRequest request,
Model model) {

TwitterConnectionFactory connectionFactory = new TwitterConnectionFactory(
environment.getProperty("spring.social.twitter.app-id"),
environment.getProperty("spring.social.twitter.app-secret"));

OAuth1Operations oauthOperations = connectionFactory.getOAuthOperations();
OAuthToken requestToken = oauthOperations.fetchRequestToken(request.getRequestURL().toString(), null);
String authorizeUrl = oauthOperations.buildAuthorizeUrl(requestToken.getValue(), OAuth1Parameters.NONE);

//need requestToken in the next process

return new RedirectView(authorizeUrl);
}

@RequestMapping(value = "/connect/twitter", method = RequestMethod.GET)
@ResponseBody
public String verifyTwitter(@RequestParam("oauth_token") String oauthToken,
@RequestParam("oauth_verifier") String oauthVerifier,
OAuthToken requestToken /*need requestToken from last request*/) {

TwitterConnectionFactory connectionFactory = new TwitterConnectionFactory(
environment.getProperty("spring.social.twitter.app-id"),
environment.getProperty("spring.social.twitter.app-secret"));

OAuth1Operations oauthOperations = connectionFactory.getOAuthOperations();
OAuthToken accessToken = oauthOperations.exchangeForAccessToken(new AuthorizedRequestToken(requestToken, oauthVerifier), null);
Connection<Twitter> twitterConnection = connectionFactory.createConnection(accessToken);

return "asd";
}

来自第一个请求的 requestToken 必须在下一个请求中可用。如何处理?

最佳答案

嗯,一种方法是将它存储在“ session ”中。我说用引号括起来是因为我不一定是指 servlet session (它可能会也可能不会跨多个节点工作,具体取决于您的服务器设置)。它可以是执行 session 功能的任何东西,例如(可能)Redis 键值存储。当然,一旦您从“ session ”中获取它,您还需要将其清除。

为此,Spring MVC 直接支持 flash 属性。参见 http://docs.spring.io/spring/docs/4.0.6.RELEASE/spring-framework-reference/htmlsingle/#mvc-flash-attributes .

此外,令我印象深刻的是,您正在编写自己的 Controller 来与 Twitter 进行 OAuth 舞蹈,但 Spring Social 的 ConnectController 已经存在用于该目的。参见 https://github.com/spring-projects/spring-social-samples/tree/master/spring-social-showcase有关如何使用 ConnectController 的示例。

关于java - 使用 spring social 为 Twitter 和 Facebook 创建 OAuth Flow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24853949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com