【问题标题】:Dynamically embed Twitter timelines (API V 1.1)动态嵌入 Twitter 时间线 (API V 1.1)
【发布时间】:2013-04-12 19:36:09
【问题描述】:

Twitter 的新嵌入式时间线似乎不允许动态创建嵌入式时间线。

这是他们网站上的部分: https://dev.twitter.com/docs/embedded-timelines

在旧版本的 API 中,可以动态切换小部件中的用户名,但新 API 会强制您将完整的小部件存储在其服务器上并通过小部件 ID 进行访问。有什么办法吗?

【问题讨论】:

    标签: api twitter


    【解决方案1】:

    不 :( 不幸的是,Twitter 将所有小部件(嵌入的时间线是小部件)与它们的 ids 匹配。因此,它会识别您的时间线小部件的 id 并显示您的时间线,因此您不能简单地更改Twitter 处理它查询的内容。

    以下是您的选择:

    1. 创建多个小部件并根据某些事件显示/隐藏它们
    2. 使用 AJAX 并查询服务器端脚本以获取用户的时间线。

    为了获得最大的灵活性,第二个选项可能是您的最佳途径。如果您使用的是 PHP 或 .NET,我可以为您提供帮助,所以请告诉我您是(以及哪一个)。

    【讨论】:

    • 感谢您的回答。我很欣赏这个提议,但我们正在使用 Scala/Play 并且只是将用户名动态地注入到小部件中。它现在可以工作,但一旦完全弃用提要就不会了。
    • 不客气,我知道您使用的是不同的技术。但是,如果是这种情况,那么您应该在原始帖子中说明这一点。就目前而言,这篇文章不太可能对任何未来的用户有用,因为您已经接受了一个与您的原始帖子几乎没有关系的答案。如果我能够这样做,出于这个原因,我会否决这个问题。
    【解决方案2】:

    这对于带有新 Twitter API 1.1 的 Timeline 非常有效

    1) 在http://twitter4j.org/en/下载twitter4j-core-3.0.3.jar 2)尝试使用此代码:

    private static final String TWITTER_CONSUMER_KEY = "xxxxxxxxxxxxxxxxxx";
    private static final String TWITTER_SECRET_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    private static final String TWITTER_ACCESS_TOKEN = "xxxxxxxxxxxxxxxxxxxxxxx";
    private static final String TWITTER_ACCESS_TOKEN_SECRET = "xxxxxxxxxxxxxxxxxxxxxxxxx";
    
    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setDebugEnabled(true)
        .setOAuthConsumerKey(TWITTER_CONSUMER_KEY)
        .setOAuthConsumerSecret(TWITTER_SECRET_KEY)
        .setOAuthAccessToken(TWITTER_ACCESS_TOKEN)
        .setOAuthAccessTokenSecret(TWITTER_ACCESS_TOKEN_SECRET);
    TwitterFactory tf = new TwitterFactory(cb.build());
    Twitter twitter = tf.getInstance();
    try {
        Query query = new Query("MrEdPanama");
        QueryResult result;
        do {
            result = twitter.search(query);
            List<Status> tweets = result.getTweets();
            for (Status tweet : tweets) {
                System.out.println("@" + tweet.getUser().getScreenName() + " - " + tweet.getText());
            }
        } while ((query = result.nextQuery()) != null);
        System.exit(0);
    } catch (TwitterException te) {
        te.printStackTrace();
        System.out.println("Failed to search tweets: " + te.getMessage());
        System.exit(-1);
    }
    

    【讨论】:

      【解决方案3】:

      我意识到这个问题是几个月前提出的,但实际上可以通过在 URL 中添加“data-”标签来轻松实现。

      查看 Twitter 页面以了解嵌入式时间线的自定义: https://dev.twitter.com/docs/embedded-timelines#customization

      【讨论】:

      • 问题是关于创建可以更改用户名等的小部件,这在新系统中不可能。在新系统中,每个小部件都必须手动创建。
      • 没关系;我看到这显然适用于用户名。但请注意,它不适用于搜索查询。 :(
      • 不幸的是,这在当时看来确实是不可能的。 Twitter 确实允许动态更改用户名、用户 ID、收藏夹和列表,我相信这就是这里的问题。不过我可能看错了。在那种情况下它不起作用(还)..
      【解决方案4】:

      我最终也采用了这种方法。这个例子非常适合学习如何使用 scala:http://bcomposes.wordpress.com/2013/02/09/using-twitter4j-with-scala-to-access-streaming-tweets/

      基本上,通过创建一个 twitter oauth 应用程序并使用 twitter4j,我们创建了一个客户端并使用 javascript 对其进行样式设置。我们使用带有 javascript 的正则表达式来制作链接和用户名超链接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-30
        • 2014-05-04
        • 2013-07-21
        • 1970-01-01
        • 2015-09-11
        • 2013-06-12
        • 1970-01-01
        相关资源
        最近更新 更多