7
votes

Java Google Calendar API "Access_Denied" sur le compte de service

J'essaie de vous connecter à un calendrier à l'aide de l'API de Java Google Calendar. L'application Java utilise un compte de service.

J'ai le code suivant: xxx

sur la dernière ligne, je reçois une IOException avec le message: < BlockQuote>

ex = (com.google.oath.client.auth.oauth2.TokenResponsException) com.google.api.client.auth.oauth2.TokenResponsException: 400 mauvais Demande {"Erreur": "Access_denied"}

i Dubble vérifie les valeurs de l'objet googlecreducential et ils sont corrects. J'ai aussi ajouté https://www.google.com/calendar/feeds/ , Http://www.google.com/calendar/feeds/ dans ma console de domaine avec l'ID d'application en tant que client pour autoriser l'accès aux applications tiers

Suis j'oublie une étape?


4 commentaires

Salut, as-tu eu ça pour travailler? J'essaye avec la portée Gmail mais que vous obtenez la même erreur ..


J'ai mis à jour avec la réponse;)


Merci, le compte de service ne semble pas fonctionner pour Gmail


Salut, tu m'inquiètes de me guider sur la façon de faire ce travail pour une application Android? Je reçois accès à une erreur non configurée et lorsque j'utilise ce code, je reçois une exception de pointeur NULL lorsque les informations d'identification sont construites. veuillez aider


3 Réponses :


0
votes

Je l'ai eu pour travailler

Je ne sais pas pourquoi mais j'ai supprimé la ligne p> xxx pré>

J'ai également ajouté une URL supplémentaire dans la portée du domaine: p> xxx pré>

et supprimé un lien qui ne fonctionnait pas. p>

Enfin j'ai changé l'applicationName dans la déclaration de ma cliente au même nom que dans la console API P> xxx pré>

après ces étapes, il a commencé à fonctionner. p>

Notez également pour référence ultérieure après que je l'ai fait cela, j'avais l'erreur suivante: p> xxx pré>

J'ai résolu ceci en changeant par exemple: P>

Event result = client.events().insert("primary", event).execute();


0 commentaires

0
votes

Je fais:

List find = client.events().list(EMAIL_ADRESS);
DateTime timeMin = new DateTime(DateUtil.stringToDate("01/01/2013"));
DateTime timeMax = new DateTime(DateUtil.stringToDate("01/02/2013"));

find.setTimeMin(timeMin);
find.setTimeMax(timeMax);

   try{
       Events events = find.execute();
       int i =0;

       while (true) {
           System.out.println("Page: "+(++i)+": "+events.getItems().size());
         for (Event event : events.getItems()) {
           System.out.println(event.getSummary());
         }
         String pageToken = events.getNextPageToken();
         if (pageToken != null && !pageToken.isEmpty()) {
           events = client.events().list(EMAIL_ADRESS).setPageToken(pageToken).execute();
         } else {
           break;
         }
       }

       }catch(GoogleJsonResponseException e){
           System.out.println(e.getMessage());
//         e.printStackTrace();
       }


0 commentaires

3
votes

L'API n'est pas encore terminé. Plus spécifiquement la partie de compte de service.

Le propriétaire du calendrier doit donner la permission à l'application pour lire / écrire le calendrier dans ses paramètres de calendrier. Il est trouvé dans les paramètres de partage du calendrier, vous pouvez également ajouter des adresses de courrier électronique et leur donner la permission de votre calendrier.

Ainsi, dans ce cas, je devais ajouter: xxx@developer.gserviceAccount.com à la liste permanente / partage des calendriers La demande nécessitait accès à.

J'ai également supprimé un autre poste qui n'a pas de travail complet en raison de la question ci-dessus. Je vais le nonéloire car il contient des fragments de code qui peuvent aider d'autres personnes à l'avenir. Mais Baware des problèmes d'autorisation et des comptes de service ne prenant pas en charge Google Calendar


1 commentaires

Bonjour Stephan, vous avez dit que «Comptes de service ne prenant pas en charge Google Calendar», vous ne pouvez donc pas utiliser votre compte de service pour récupérer les événements de calendrier Google de quelqu'un, même si elle / He / Admin a accordé la permission à nous?