【问题标题】:Twitter search by hashtag example API v1.1Twitter 搜索标签示例 API v1.1
【发布时间】:2013-06-10 10:42:09
【问题描述】:

过去,使用 Twitter API 版本 1,我使用以下 URL 来获取所有带有“棒球”标签的推文的 JSON 提要:

http://search.twitter.com/search.json?q=%23baseball&result_type=recent

您如何使用 API 1.1 版获得类似的结果?我使用 PHP 作为我的服务器端代码,所以不确定是否需要使用它来进行身份验证等?

示例代码将非常有帮助。谢谢。

【问题讨论】:

    标签: php twitter


    【解决方案1】:

    如您所知,现在需要经过身份验证的请求,因此您可能需要先了解一些事项。新的 1.1 搜索,如何使用主题标签,以及身份验证。

    Twitter 搜索 1.1

    可以在here 找到新的 twitter 搜索 api 文档。根据这些文档:

    https://api.twitter.com/1.1/search/tweets.json 是用于搜索的新资源 URL。

    标签搜索

    你说对了! %23 解码为 # 字符。

    身份验证

    OAuth 要复杂得多。如果您只是使用刚刚工作的库,那将会有所帮助。

    这里是a post,很多人发现它可以帮助您向 1.1 API 发出经过身份验证的请求。这包括一个包含library 的单一文件,以发出您需要的请求。

    示例

    此示例假设您正在使用上述库并设置您的密钥等。提出您的请求:

    // Your specific requirements
    $url = 'https://api.twitter.com/1.1/search/tweets.json';
    $requestMethod = 'GET';
    $getfield = '?q=#baseball&result_type=recent';
    
    // Perform the request
    $twitter = new TwitterAPIExchange($settings);
    echo $twitter->setGetfield($getfield)
                 ->buildOauth($url, $requestMethod)
                 ->performRequest();
    

    是的,就是这样。除了您需要做的一些小设置(正如我的帖子所解释的那样),对于您的开发密钥,这就是执行经过身份验证的请求所需的一切。

    回应

    响应以 JSON 格式返回给您。来自overview

    API v1.1 将仅支持 JSON。一段时间以来,我们一直在暗示这一点,首先是在 Streaming API 上放弃 XML 支持,最近在趋势 API 上放弃了支持。我们选择支持跨平台共享的 JSON 格式。

    【讨论】:

    • @Jimbo:感谢您的出色回答(+1)。我有一个问题我正在制作一个基于您的解决方案的网络应用程序但我收到错误“超出速率限制”错误消息我该怎么办解决它我想知道我必须遵循其他身份验证方法??我可以使用正在使用我的网络应用程序的用户的推特帐户吗?请帮忙谢谢..
    • 很好的例子!谢谢!
    • 太好了,我正在搜索#tag serch! “你没看错!%23 解码为 # 字符”
    • @KirenSiva 使用上述库,您不需要在$getfield 中输入任何编码字符,因为库会自动为您执行此操作。
    • 如果我不想根据哈希标签进行搜索怎么办。我想获取过去 1 天更新的所有状态。?
    【解决方案2】:

    这是一个简单的 Python 示例,使用 requests API 使用仅应用程序身份验证。通过在https://apps.twitter.com/app/new 创建应用来获取密钥。

    api_key = ...
    api_secret = ...
    
    # https://dev.twitter.com/oauth/application-only
    # The base64 stuff described there is the normal Basic Auth dance.
    import requests
    r = requests.post('https://api.twitter.com/oauth2/token',
                      auth=(api_key, api_secret),
                      headers={'Content-Type':
                          'application/x-www-form-urlencoded;charset=UTF-8'},
                      data='grant_type=client_credentials')
    assert r.json()['token_type'] == 'bearer'
    bearer = r.json()['access_token']
    
    url = 'https://api.twitter.com/1.1/search/tweets.json?q=%23yourhashtag'
    r = requests.get(url, headers={'Authorization': 'Bearer ' + bearer})
    print r.json()
    

    【讨论】:

      【解决方案3】:

      如果你只是想测试,你可以这样做:

      访问 twitter 开发控制台:https://dev.twitter.com/console

      在 Authentication put: OAuth 1 中,这将要求您从您的 Twitter 帐户授予权限。

      请求 URL 放 GET

      在网址中:https://api.twitter.com/1.1/search/tweets.json?q=%23yourhashtag

      发送后,在请求窗口中,复制授权值。

      现在把它放在你的请求头中。

      Go 示例:

      func main() {
          client := &http.Client{}
          req, _ := http.NewRequest("GET", "https://api.twitter.com/1.1/search/tweets.json?q=%23golang", nil)
          req.Header.Add("Authorization", `OAuth oauth_consumer_key=...`)
      
          resp, _ := client.Do(req)
          io.Copy(os.Stdout, resp.Body)
      }
      

      【讨论】:

        猜你喜欢
        • 2013-08-15
        • 1970-01-01
        • 2013-07-24
        • 2013-08-19
        • 1970-01-01
        • 2014-05-24
        • 2018-10-13
        • 2013-05-30
        • 1970-01-01
        相关资源
        最近更新 更多