2013-06-13 32 views
21

Trong quá khứ, sử dụng Twitter API phiên bản 1, tôi đã sử dụng các URL sau để có được một thức ăn JSON của tất cả các tweet với hashtag "bóng chày":Twitter tìm kiếm theo hashtag dụ API v1.1

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

Làm thế nào để bạn đạt được kết quả tương tự bằng cách sử dụng API phiên bản 1.1? Tôi đang sử dụng PHP như mã phía máy chủ của tôi, vì vậy không chắc chắn nếu tôi cần phải sử dụng nó để xác thực và như vậy?

Mã mẫu sẽ cực kỳ hữu ích. Cảm ơn.

Trả lời

36

Như bạn đã biết, yêu cầu đã được xác thực hiện là bắt buộc, do đó, có một vài điều bạn có thể cần xem trước. Tìm kiếm 1.1 mới, cách sử dụng thẻ bắt đầu bằng # và xác thực.

Twitter Tìm kiếm 1.1

Các tài liệu api tìm kiếm twitter mới có thể được tìm thấy here. Theo các tài liệu này:

https://api.twitter.com/1.1/search/tweets.json là URL tài nguyên mới để sử dụng cho tìm kiếm.

hashtag tìm kiếm

Bạn đã có một phần đúng! %23 giải mã thành ký tự #.

Xác thực

OAuth là rất nhiều phức tạp hơn. Nó sẽ giúp ích nếu bạn vừa sử dụng một thư viện vừa hoạt động.

Đây là a post nhiều người được tìm thấy hữu ích để giúp bạn đưa ra yêu cầu được xác thực cho API 1.1. Điều này bao gồm một tệp bao gồm library để thực hiện các yêu cầu như yêu cầu của bạn.

Ví dụ

Ví dụ này giả sử bạn đang sử dụng các thư viện trên và thiết lập phím của bạn vv Để thực hiện yêu cầu của bạn:

// 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(); 

Vâng, đó là nó. Ngoài việc thiết lập nhỏ bạn cần phải làm (như bài viết của tôi giải thích), cho các phím dev của bạn, đó là tất cả mọi thứ bạn cần để thực hiện yêu cầu xác thực.

đáp ứng

Câu trả lời sẽ được trả về cho bạn trong JSON. Từ số overview:

API v1.1 sẽ chỉ hỗ trợ JSON. Chúng tôi đã gợi ý điều này một thời gian, trước tiên, bỏ hỗ trợ XML trên API phát trực tiếp và gần đây hơn trên API xu hướng. Chúng tôi đã chọn bỏ hỗ trợ của chúng tôi theo định dạng JSON được chia sẻ trên nền tảng.

+0

Cảm ơn rất nhiều. Nó làm việc cho tôi. –

+0

@Jimbo: Cảm ơn câu trả lời tuyệt vời (+1) .Tôi có một vấn đề Tôi đang tạo một ứng dụng web dựa trên giải pháp ur Nhưng tôi đã nhận được thông báo lỗi "Tỷ lệ vượt quá giới hạn" Làm cách nào tôi có thể giải quyết nó Tôi muốn biết tôi phải làm theo phương pháp xác thực khác ?? Tôi có thể sử dụng tài khoản twiter của người dùng đang sử dụng ứng dụng web của tôi không. vui lòng giúp đỡ .. – mcacorner

+1

Ví dụ tuyệt vời! Cảm ơn bạn! – markzzz

4

Nếu bạn chỉ muốn kiểm tra, bạn có thể làm sau:

Truy cập twitter dev console: https://dev.twitter.com/console

Trong Xác thực đặt: OAuth 1, mà sẽ yêu cầu bạn cho phép từ bạn tài khoản Twitter.

Request URL đưa GET

Trong url: https://api.twitter.com/1.1/search/tweets.json?q=%23yourhashtag

Sau Gửi, trong cửa sổ yêu cầu, sao chép các giá trị ủy quyền.

Bây giờ hãy đặt nó vào tiêu đề yêu cầu của bạn.

Go Ví dụ:

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) 
} 
+1

+1 cho ví dụ về golang. –

1

Dưới đây là một ví dụ đơn giản trong sử dụng ứng dụng python chỉ auth bằng cách sử dụng yêu cầu API. Nhận khóa bằng cách tạo ứng dụng tại 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() 
Các vấn đề liên quan