2012-12-22 34 views
7

Đây là một tiếp nối từ chủ đề của tôi về một lỗi 401 khi sử dụng API Lịch và OAuth2 Google, có thể được tìm thấy here403 nhắn Forbidden khi gọi v3 Lịch Google API sử dụng một tài khoản dịch vụ qua OAuth 2.0

Điều này chứa thông tin chi tiết về thiết lập tài khoản dẫn đến câu hỏi tiếp theo của tôi, vì vậy tôi sẽ không lặp lại chính mình trong chuỗi này.

OK, vì vậy khi tôi gọi mã sau để cập nhật sự kiện Lịch, tôi nhận được lỗi 403 bị cấm.

for (Event event : events.getItems()) 
{ 
    event.setSummary("XXX" + event.getSummary()); 

    Event updatedEvent = calendar.events().update(CALENDAR_ID, event.getId(), event).execute(); 
} 

Dưới đây là thông báo lỗi trả về:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden 
{ 
    "code" : 403, 
    "errors" : [ { 
     "message" : "Forbidden" 
    } ], 
    "message" : "Forbidden" 
} 

Tôi đã cố gắng gì? Vâng, tôi đã đọc lại tài liệu Google (tài khoản dịch vụ) khá kém, đã kiểm tra lại cài đặt tài khoản Bảng điều khiển API của tôi, đã thử thay đổi mã xây dựng chứng chỉ (điều này dẫn đến các lỗi khác, đó là hồi quy về chuỗi trước của tôi) .

Tóm lại, không có gì hoạt động, vì vậy có bất kỳ điều gì rõ ràng tôi đang thiếu không?

Trả lời

23

Giải quyết, nhờ this bài đăng.

Bạn phải chia sẻ lịch từ tài khoản Lịch Google của mình với email Tài khoản dịch vụ được tạo trong Bảng điều khiển API của Google, ví dụ: [email protected].

Tôi hiện có thể cập nhật lịch của mình từ dịch vụ web của mình.

+0

hii u có thể cho tôi biết làm thế nào tôi có thể chia sẻ lịch từ google console? I đã chia sẻ lịch này cho lịch android của tôi nhưng không nhận được bất kỳ giải pháp nào? – Google

+1

Tôi gặp lỗi với 403 bị cấm. khi tôi chia sẻ lịch của mình, nó hiển thị id email của tôi với tư cách là chủ sở hữu, vui lòng định cấu hình như thế nào ??? – Sadikhasan

+2

Tôi có cùng một vấn đề. Giải pháp là: 1) Kiểm tra tất cả thông tin đăng nhập bạn thiết lập cho Calendar.Builder(). 2) Chia sẻ lịch với Tài khoản dịch vụ của bạn và đảm bảo chọn "Thay đổi sự kiện" trong "Cài đặt quyền". – Emerald214

2

Tôi cũng nhận được lỗi tương tự ngay cả sau khi chia sẻ lịch như trong câu trả lời của Justin. Sau khi so sánh với một mẫu làm việc đã tìm ra rằng tôi đã thiết

var SCOPES = ["https://www.googleapis.com/auth/calendar.readonly"]; 

thay vì

var SCOPES = ["https://www.googleapis.com/auth/calendar"]; 

Hope this helps bất cứ ai đã thực hiện một sai lầm tương tự và nhận được lỗi này.