Tôi đang sử dụng api lịch google để nhận sự kiện từ lịch công khai. Trong google phát triển console Tôi đã tạo ra một chìa khóa tài khoản dịch vụ (json) mà tôi sử dụng để thiết lập các GoogleCredential trong mã android như sau:android google calendar api không hoạt động khi đang phát hành
AssetManager am = getAssets();
InputStream inputStream = am.open("key-file-name.json");
GoogleCredential credential = GoogleCredential.fromStream(inputStream);
credential =credential.createScoped(Arrays.asList("https://www.googleapis.com/auth/calendar.readonly"));
Sau đó, tôi sử dụng GoogleCredential này để có được những đối tượng lịch
Calendar client = new Calendar.Builder(AndroidHttp.newCompatibleTransport(),
new JacksonFactory(),
credential).setApplicationName("someAppName").build();
sau đó, tôi nhận được 5 sự kiện tiếp theo từ lịch này
com.google.api.services.calendar.model.Events nextEvent =
client.events().list("[email protected]")
.setTimeMin(new DateTime(new java.util.Date(), java.util.TimeZone.getDefault()))
.setMaxResults(5)
.setOrderBy("startTime")
.setSingleEvents(true)
.setShowDeleted(false)
.execute();
Trong khi mã này hoạt động tốt trong gỡ lỗi khi chạy trong studio android, khi tôi xây dựng để phát hành (ký với tệp kho khóa) nó không hoạt động. Nó chỉ trả về ngoại lệ sau đây:
com.google.aacbc: 404 Not Found 3097-3187/com.news.apoelnews W/System.err: Not Found 3097-3187/com.news.apoelnews W /System.err:
tại com.google.aacdacb (Nguồn không xác định)
Xin vui lòng trợ giúp!
CẬP NHẬT Tôi đã thêm việc sử dụng khóa API android trong các mã như sau:
com.google.api.services.calendar.model.Events nextEvent =
client.events().list("[email protected]")
.setTimeMin(new DateTime(new java.util.Date(), java.util.TimeZone.getDefault()))
.setMaxResults(5)
.setOrderBy("startTime")
.setSingleEvents(true)
.setShowDeleted(false)
.setKey("api-key-string_from_developer_console"))
.execute();
Điều này làm cho ngoại lệ sau đây:
W/System.err: com .google.api.client.googleapis.json.GoogleJsonResponseException: 403 Bị cấm W/System.err: "mã": 403, W/System.err: "errors": [{ W/System.err: "tên miền" : "usageLimits", W/System.err:
"message": "Có một hạn chế cho mỗi IP hoặc mỗi Referer cấu hình về khóa API của bạn và yêu cầu không phù hợp với những hạn chế này
Xin lưu ý rằng các phím API được tạo bằng cách sử dụng gỡ lỗi và bản phát hành SHA-1.
Vì bạn đang sử dụng tài khoản dịch vụ, bạn đang sử dụng Lịch cho làm việc (Google Apps for Work)? – adjuremods
Không, tôi không .......................... – Louis
Tại sao lại sử dụng Tài khoản dịch vụ? Từ những gì tôi biết, bạn có thể sử dụng Tài khoản dịch vụ nếu bạn đang sử dụng Google Apps for Work ([ủy quyền ủy quyền trên toàn miền] (https://developers.google.com/google-apps/calendar/concepts/domain#accessing_domain_calendars_as_an_app)). – adjuremods