0

当我只想要最后 2 条推文时,为什么需要授权?我想创建一个最小的配置,因为我不需要连接的东西。而且据我了解 twitter api 没有必要拥有一个 consumerKey/consumerSecret 来获取一些推文?!

豆:

<bean id="twitter" class="org.springframework.social.twitter.api.impl.TwitterTemplate" />

弹簧控制器:

@Controller
public class FragmentController {
    @Autowired
    private Twitter twitter;

    @ModelAttribute
    public void global(ModelMap map) {
        map.addAttribute("tweets", twitter.timelineOperations().getUserTimeline("myTwitterUsername", 2));
    }

    @RequestMapping("index.html")
    public String index() {
        return "index";
    }
}
4

1 回答 1

2

自 Twitter API 1.1 版发布以来,所有针对 API 的操作都需要授权,包括那些您认为不需要授权的操作。

也就是说,您不一定需要用户授权来请求资源,否则这些资源对任何特定用户都是公共的而不是私有的。例如,可以在没有用户授权的情况下拥有指定用户的推文。但是您仍然需要应用程序授权。

这就是 Twitter 的 API 有点奇怪的地方。对于用户授权,Twitter 使用 OAuth 1.0a 保护,这适用于 Twitter 的所有(或大多数)资源。对于仅应用授权,Twitter 使用 OAuth 2 客户端凭据授权。这种授权适用于整个 API 的一个子集。

幸运的是,Spring Social 在最新的快照版本 (1.1.0.BUILD-SNAPSHOT) 中支持这一点。通过 OAuth2Template,您可以调用 authenticateClient() 来获取 AccessGrant(并从中获取访问令牌)。然后,您可以创建 TwitterTemplate 的实例,仅传入客户端的访问令牌,并使用它来访问 Twitter 的 API,以执行那些访问仅限应用程序授权的操作。

要知道,当我说“非常最新的快照构建”时,这是非常直白的。昨晚我将更改推送到 TwitterTemplate,它仍然可以经受更多的测试。我已经在搜索方面对其进行了一些测试,但所有其他资源都相对未经测试。如果您遇到任何问题,请通过在https://jira.springsource.org/browse/SOCIALTW创建错误问题告诉我。

于 2013-06-02T01:36:41.427 回答