2015-05-21 15 views
5

Tôi đang sử dụng Youtube V3 Api và đây là đoạn mã để kéo mười video hàng đầu từ kênh youtube của tôi. (Truy vấn này cùng hoạt động hoàn hảo trong API explorer google @https://developers.google.com/apis-explorer/)Lỗi API Youtube v3 - 'Không có bộ lọc nào được chọn'

url_start = "https://www.googleapis.com/youtube/v3/videos?" + \ 
      "order=viewCount&part=snippet&forMine=true" + \ 
      "&type=video&maxResults=10&key=MY_API_KEY" 
data = requests.get(url_start).json() 

Nhưng tôi nhận được lỗi này:

{u'error': {u'code': 400, 
      u'message': u'No filter selected.', 
      u'errors':[{u'locationType': u'parameter', 
         u'domain': u'youtube.parameter', 
         u'message': u'No filter selected.', 
         u'reason': u'missingRequiredParameter', 
         u'location': u''}]}} 

tôi biết chìa khóa có giá trị bởi vì nếu tôi có thể làm cùng một truy vấn mà không forMine

https://www.googleapis.com/youtube/v3/search?part=snippet&key=MY_API_KEY 

Và tôi nhận được các video hàng đầu nói chung từ youtube. Có cách nào tốt hơn để thực hiện việc này hay cách giải quyết khác không?

Trả lời

3

Thông số forMine chỉ hoạt động cho người dùng được xác thực (người đã trải qua luồng oAuth2 với ứng dụng của bạn), vì vậy tham số bị thiếu mà yêu cầu của bạn đang khiếu nại là mã thông báo truy cập cần thiết.

Nếu mục tiêu của bạn là chạy tập lệnh riêng cho bạn thấy mười video hàng đầu của bạn tại bất kỳ thời điểm cụ thể nào, bạn có thể thiết lập thói quen tạm thời trong ứng dụng của mình sẽ cho phép bạn xác thực bằng oAuth2 mã thông báo; nếu bạn lưu trữ điều đó, thì trong tương lai, mã thông báo làm mới có thể nhận được mã thông báo truy cập mà bạn không phải ủy quyền bằng tay.

Nếu mục tiêu của bạn là tạo trang tổng quan để người dùng có thể xem mười video hàng đầu của riêng họ, thì bạn sẽ chỉ phải thực hiện xác thực oAuth2 vào luồng của mình và gửi mã thông báo truy cập với mọi yêu cầu. Các gapi client cho Python làm cho điều này khá đơn giản.

Nếu bạn muốn thực hiện mà không có tham số forMine của danh sách video, bạn có thể quay lại điểm cuối tìm kiếm và chuyển ID kênh người dùng (điều này yêu cầu biết trước, tất nhiên, trong khi phương thức được xác thực sẽ làm việc cho bất kỳ người dùng nào đăng nhập mà không cần phải biết họ là ai):

https://www.googleapis.com/youtube/v3/search?order=viewCount&part=snippet&channelId={channel id here}&maxResults=25&key={YOUR_API_KEY} 
+0

mục tiêu là thứ hai, chỉ cần lấy mười từ kênh của tôi bất kỳ lúc nào với python - Tôi không nhận ra bạn cần nhận mã thông báo làm mới ngay để thực hiện các truy vấn cụ thể. Điều này hữu ích –

+0

Lưu ý Tôi đã chỉnh sửa câu trả lời của mình để xây dựng một chút ... bạn có thể làm điều đó mà không cần bất kỳ mã thông báo nào NẾU bạn đã biết ID kênh của người dùng đã cho. Nếu không, bạn sẽ phải sử dụng oAuth. – jlmcdonald

+0

cảm ơn @jlmcdonald đã hoạt động! Tôi cũng đã có ID kênh sai - nhưng nó hoạt động độc đáo mà không cần phải nhận và duy trì mã thông báo cho dữ liệu đơn giản! –

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