【问题标题】:is it available save the user session on web server?是否可以将用户会话保存在 Web 服务器上?
【发布时间】:2014-08-29 02:45:10
【问题描述】:

此代码仅供用户使用。 我正在寻找为多个用户制作此功能的方法。

请给我一些建议。

要运行批处理作业,我知道应该删除一些变量(is_authorized、requestToken 和 accessToken)。我尝试使用 spring-social-tumblr(在 github 上),但使用 ConnectionRepository 并不容易。所以我尝试使用路标。

使用signpost签名后,如何为多用户设置用户访问令牌?

使用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();
        }

    } 

【问题讨论】:

  • 尊敬的编辑。请不要修改“源代码”。它可能会提出另一个问题。

标签: java facebook spring spring-mvc spring-social


【解决方案1】:

虽然我没有使用 Spring Social Tumblr(它是一个社区主导的项目),但这个过程应该与在 Facebook 或 Twitter 上使用 Spring Social 没有太大(或任何)不同。

请注意,在这段代码中,您做了太多工作。您将遇到重定向到 Tumblr 以进行授权的麻烦,然后处理重定向以交换请求令牌和验证器以获取访问令牌。当然,必须做这些事情,但是对于 Spring Social,您绝对没有理由必须做这些事情。这就是 ConnectController 的用途。 ConnectController 处理所有这些,创建并保持连接,并且(一般来说)您不必直接使用 OAuth。而且,它与多个用户一起工作没有问题。

我是否可以建议您查看 https://github.com/spring-projects/spring-social-samples/tree/master/spring-social-showcase 上的 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 的自动配置功能,因此仍然需要一些手动配置。)

【讨论】:

  • 非常感谢。我试图将会话保存为批处理作业。有两个问题。一是,社交 tumblr 与 spring-social-showcase-xml 不匹配。甚至我使 jsp 视图文件和拦截器与 facebook 相同。它只是返回“social_authorization_error”
  • 感谢您在社交框架上的工作,我正在尝试使用原始源的连接控制器。完成这项工作后,我将在这里发布自我解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-26
  • 1970-01-01
  • 2012-09-04
  • 1970-01-01
  • 1970-01-01
  • 2019-01-18
  • 2022-10-24
相关资源
最近更新 更多