2016-04-30 16 views
16

Tôi đã cố gắng để có được điều này để làm việc cho có lẽ 6 giờ bây giờ vô ích, đọc tất cả các câu hỏi stackoverflow tôi có thể tìm thấy về chủ đề này.Instagram/tags/ (hashtag)/phương tiện/điểm cuối gần đây không trả về phân trang?

Tôi đang cố gắng để có được 100, 200, 500 hoặc có thể ảnh từ một thẻ duy nhất:

func hashtags(hashtag: String, nextMaxTagId: String?) -> RequestParamters { 
    var params = "/tags/\(hashtag)/media/recent|access_token=\(accessToken)" 
    var parameters = Dictionary<String, AnyObject>() 
    parameters["access_token"] = accessToken 

    let urlString = "https://api.instagram.com/v1/tags/\(hashtag)/media/recent" 
    if let nextMaxTagId = nextMaxTagId { 
     params += "|max_tag_id=\(nextMaxTagId)" 
     parameters["max_tag_id"] = nextMaxTagId 
    } 


    let sig = HMAC.signWithKey(C.InstagramClientSecret(), usingData: params) 
    parameters["sig"] = sig 
    return (urlString: urlString, parameters: parameters) 
} 

Đây là những gì tôi sử dụng để xây dựng các url và các thông số của tôi cho yêu cầu của tôi. Yêu cầu đầu tiên của tôi không có số nextMaxTagId và yêu cầu đó được thực hiện, trả về 20 hình ảnh và một json pagination.

Sau đó, khi tôi trích xuất next_max_tag_id từ khối phân trang và tạo yêu cầu bằng tham số đó, tôi sẽ nhận được 20 hình ảnh khác, nhưng chúng giống nhau trước và bây giờ tôi không nhận được khối trang.

Tôi đang ký chính xác yêu cầu của mình (vì tất cả các yêu cầu API khác của tôi trong suốt ứng dụng đều không gặp vấn đề gì) và tôi không ở chế độ Hộp cát.

Chỉnh sửa: Tôi cũng đã thử sử dụng min_tag_id=\(nextMinTagId), vẫn không nhận được phân trang trong yêu cầu tiếp theo.

+0

Tại sao bạn không thử sử dụng 'next_url' như là những gì Instagram gợi ý *" Đôi khi bạn không thể có đủ. Vì lý do này, chúng tôi đã cung cấp một cách thuận tiện để truy cập nhiều dữ liệu hơn trong bất kỳ yêu cầu dữ liệu tuần tự. Chỉ cần gọi url trong tham số next_url và chúng tôi sẽ trả lời với tập dữ liệu tiếp theo. "* https://www.instagram.com/developer/endpoints/ – beyowulf

+0

Tôi làm điều đó' error_message: Đã ký không hợp lệ -yquest: Chữ ký không khớp với số – shakked

+0

Yêu cầu của bạn trông như thế nào khi bạn sử dụng 'next_url'? – beyowulf

Trả lời

-1

Có vẻ như:

1) Bạn đang sử dụng Instagram Developer API với những gì có vẻ như một APIKey ủy quyền, và bạn nói bạn là KHÔNG trong Sandbox, vì vậy bạn đang ở trong một môi trường Production cho api đó.

Tôi đang cố gắng để có được 100, 200, 500 hoặc có thể ảnh từ một thẻ đơn

2) Điều này có nghĩa, kết hợp với returns 20 images and a pagination json, mà cho 100, bạn cần phải thực hiện 5 cuộc gọi tối thiểu (100/20 == 5), 200 == 10, 500 = 25.

3) Theo số developer documentation rate limits, giới hạn tổng quát trên Production5000 req/hour, với một số API bị giới hạn ở giới hạn nhỏ hơn nhiều (một số là 30/60 req/hour). Tôi không chắc chắn tôi thấy giới hạn tag tỷ lệ chính xác mà bạn đang đánh, nhưng kể từ khi câu hỏi đề cập đến:

cho lẽ 6 giờ bây giờ vô ích

nó cũng có thể bạn vừa được nhấn giới hạn yêu cầu tổng thể theo giờ mỗi giờ.

Tôi chắc chắn biết rằng đây không phải là câu trả lời mà tôi thích, bởi vì về cơ bản nó nói: you're stuck. Tôi đã thực sự chơi với giới hạn tỷ lệ bản thân mình trước đây, và tôi thấy chúng cực kỳ hạn chế (chơi chữ đầy đủ dự định). Tùy chọn duy nhất khác, mặc dù không phải là "trên bảng", là để tự cạo Instagram chính nó cho thông tin bạn cần. Tôi cho rằng không phải là "trên bảng" vì nếu bạn không tìm thấy thông tin trên trang web, bạn có thể cắt bỏ API di động thông qua một số kỹ thuật đảo ngược nhỏ (tức là sử dụng proxy HTTP để tách lưu lượng truy cập trên thiết bị di động một cách có hệ thống).Cuối cùng, việc xuất bản API Instagram chắc chắn rất hạn chế và sẽ phải đối mặt với giới hạn tốc độ trong tương lai gần (trừ khi bạn có thể nhận được bằng cách nào đó được dỡ bỏ trong một quan hệ đối tác cụ thể mà họ cho là xứng đáng, mặc dù tôi không chắc chắn điều này có thể được tiếp cận).

Các vấn đề liên quan