Sto usando google calendar api per ottenere eventi da un calendario pubblico. Nella console sviluppatore di Google Ho creato una chiave di account di servizio (JSON), che io uso per impostare il GoogleCredential nel codice Android come segue:android google calendar api non funziona quando in versione
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"));
allora io uso questo GoogleCredential per ottenere l'oggetto calendario
Calendar client = new Calendar.Builder(AndroidHttp.newCompatibleTransport(),
new JacksonFactory(),
credential).setApplicationName("someAppName").build();
Poi ho ottenere il prossimo 5 eventi da questo calendario
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();
Sebbene questo codice funzioni correttamente nel debug durante l'esecuzione in Android Studio, quando eseguo il build per la versione (firmare con il file keystore) non funziona. E 'appena restituisce il seguente eccezione:
com.google.aacbc: 404 Not Found 3097-3187/com.news.apoelnews W/System.err: Not Found 3097-3187/com.news.apoelnews W /System.err:
a com.google.aacdacb (Fonte sconosciuta)
Please help!
UPDATE ho aggiunto l'uso della chiave API Android nel codice come segue:
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();
Ciò causa l'eccezione seguente:
W/System.err: com .google.api.client.googleapis.json.GoogleJsonResponseException: 403 Pro proibito W/System.err: "codice": 403, W/System.err: "errori": [{ W/System.err: "dominio" : "usageLimits", W/System.err:
"messaggio": "C'è una limitazione per-IP o per-Referer configurato sulla vostra chiave API e la richiesta non corrisponde a queste restrizioni
Si prega di notare che le chiavi API vengono creati utilizzando il debug e la versione SHA-1.
Dal momento che si sta utilizzando account di servizio, stai usando Calendario per il lavoro (Google Apps for Work)? – adjuremods
No I .......................... – Louis
Perché utilizzare gli account di servizio? Da quello che so, puoi utilizzare gli account di servizio se utilizzi Google Apps for Work ([delegazione di autorità a livello di dominio] (https://developers.google.com/google-apps/calendar/concepts/domain#accessing_domain_calendars_as_an_app)). – adjuremods