2013-06-06 33 views
20

tôi đang làm một yêu cầu get vào URL sau (với {id} thay thế bằng id từ giao diện web):Tại sao API Lịch Google (oauth2) phản hồi 'Không đủ quyền'?

https://www.googleapis.com/calendar/v3/calendars/{id} 

Một vài khẳng định:

  1. Tiêu đề Authorize được được đặt đúng với mã thông báo truy cập hợp lệ (mã thông báo hoạt động tốt cho API Analytics)

  2. Tôi đã đặt phạm vi sau cho oauth2, hiển thị chính xác:

    https://www.googleapis.com/auth/calendar 
    
  3. Mã thông báo dường như đã hết hạn; nó hoạt động cho API Analytics.

    { "error": { "errors": [ { "domain": "global", "reason": "insufficientPermissions", "message": "Insufficient Permission" } ], "code": 403, "message": "Insufficient Permission" } } 
    

Trả lời

19

Để khắc phục, tôi đã thu hồi quyền truy cập vào ứng dụng tại https://accounts.google.com/IssuedAuthSubTokens và sau đó tôi đã có thể để truy cập API một cách chính xác.

Mặc dù có phạm vi trong danh sách và phạm vi hiển thị trên trang cấp OAuth2 của Google, phạm vi bổ sung không được cấp.

+0

Hi rob :) Tôi đã thu hồi quyền truy cập :) Và tôi tò mò làm cách nào để tôi có thể chấp thuận? :) Xin lỗi & Cảm ơn bạn :) – whitesiroi

+1

gần hai năm sau, đây là những gì hiệu quả khi bạn loại trừ lỗi cấu hình! @whitesiroi Có lẽ bạn đã tìm ra nó, nhưng đối với hậu thế: – user1870776

+0

Bạn ủy quyền lại như bình thường trên trang xác thực ứng dụng. Trong quá trình phát triển với Rails, Devise (_for: users) và google_oauth2 đó là user_omniauth_authorize_path của bạn – user1870776

5

tôi sẽ kiểm tra lại phạm vi được bao gồm - Tôi đã nhìn thấy rằng thông điệp chính xác khi tôi đã yêu cầu phạm vi sai. Truy cập https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=xxxxxx là một cách hay để xác minh.

Giả sử rằng việc kiểm tra, đảm bảo rằng người dùng mà bạn có mã thông báo truy cập có quyền xem lịch mà bạn đang cố gắng truy cập. Biểu tượng "Gears" -> "Cài đặt" -> "Lịch" -> (chọn lịch) -> "Chia sẻ lịch này"

+0

Rất cám ơn, tôi đã phát hiện ra sự cố đang sử dụng lệnh gọi tokeninfo. –

+0

Vâng, điều đó đã giúp ích rất nhiều! Cảm ơn bạn! –

4

Thêm phạm vi cho lịch visit calendar api và kiểm tra cấu hình truy cập

https://www.googleapis.com/auth/calendar 
https://www.googleapis.com/auth/calendar.readonly 
+0

chỉ có thể chọn 1? –

1

tôi phải bao gồm Google Plus phạm vi để có sự cho phép sufficent để truy cập vào một lịch:

Vì vậy, tôi scope kết thúc lên trông như này:

'https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/calendar.readonly', 'https://www.googleapis.com/auth/plus.login'

+0

chỉ thêm 'https://www.googleapis.com/auth/plus.login' làm việc cho tôi !, cảm ơn – andr3s2