MissingAuthorizationException:获取最后的推文

时间:2013-05-31 22:32:42

标签: spring spring-social

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

豆:

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

Spring Controller:

@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";
    }
}

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

相关问题