com.google.l'api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
Je suis en train de télécharger un fichier texte à mon compte Google Drive. N'importe quoi, j'ai toujours la rencontre d'un com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
Stacktrace:
Exception in thread "main" com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Forbidden",
"reason" : "forbidden"
} ],
"message" : "Forbidden"
}
at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:145)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:423)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:343)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:460)
at chatterjee.sandeep.javabase.miscellaneous.DriveCommandLine.main(DriveCommandLine.java:69)
Ici est la ligne 69 de DriveCommandLine.java
File file = service.files().insert(body, mediaContent).execute();
Code Complet:
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.auth.oauth2.GoogleTokenResponse;
import com.google.api.client.http.FileContent;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.DriveScopes;
import com.google.api.services.drive.model.File;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class DriveCommandLine {
private static String CLIENT_ID = "CLIENT_ID";
private static String CLIENT_SECRET = "CLIENT_SECRET";
private static String REDIRECT_URI = "REDIRECT_URI";
public static void main(String[] args) throws IOException {
HttpTransport httpTransport = new NetHttpTransport();
JsonFactory jsonFactory = new JacksonFactory();
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
httpTransport, jsonFactory, CLIENT_ID, CLIENT_SECRET,
Arrays.asList(DriveScopes.DRIVE_FILE)).setAccessType("online")
.setApprovalPrompt("auto").build();
String url = flow.newAuthorizationUrl().setRedirectUri(REDIRECT_URI)
.build();
System.out
.println("Please open the following URL in your browser then type the authorization code:");
System.out.println(" " + url);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String code = br.readLine();
GoogleTokenResponse response = flow.newTokenRequest(code)
.setRedirectUri(REDIRECT_URI).execute();
GoogleCredential credential = new GoogleCredential()
.setFromTokenResponse(response);
//Create a new authorized API client
Drive service = new Drive.Builder(httpTransport, jsonFactory,
credential).build();
//Insert a file
File body = new File();
body.setTitle("My document");
body.setDescription("A test document");
body.setMimeType("text/plain");
java.io.File fileContent = new java.io.File(
"/path/to/TextFile.txt");
FileContent mediaContent = new FileContent("text/plain", fileContent);
File file = service.files().insert(body, mediaContent).execute();
System.out.println("File ID: " + file.getId());
}
}
J'ai le texte suivant pots dans mon projet de construction de chemin d'accès:
commons-logging-1.1.1.jar
google-api-client-1.18.0-rc.jar
google-api-client-android-1.18.0-rc.jar
google-api-client-appengine-1.18.0-rc.jar
google-api-client-gson-1.18.0-rc.jar
google-api-client-jackson2-1.18.0-rc.jar
google-api-client-java6-1.18.0-rc.jar
google-api-client-servlet-1.18.0-rc.jar
google-api-services-drive-v1-rev123-1.18.0-rc.jar
google-http-client-1.18.0-rc.jar
google-http-client-android-1.18.0-rc.jar
google-http-client-appengine-1.18.0-rc.jar
google-http-client-gson-1.18.0-rc.jar
google-http-client-jackson2-1.18.0-rc.jar
google-http-client-jdo-1.18.0-rc.jar
google-oauth-client-1.18.0-rc.jar
google-oauth-client-appengine-1.18.0-rc.jar
google-oauth-client-java6-1.18.0-rc.jar
google-oauth-client-jetty-1.18.0-rc.jar
google-oauth-client-servlet-1.18.0-rc.jar
gson-2.1.jar
httpclient-4.0.3.jar
httpcore-4.0.1_1.jar
jackson-core-2.1.3.jar
jdo2-api-2.3-eb.jar
jetty-util-6.1.26.jar
jsr305-1.3.9.jar
transaction-api-1.1-rev-1.jar
À l'heure actuelle, j'ai deux projets mis en place avec Lecteur API activée.
Maintenant où dois-je configurer correctement les autorisations pour résoudre ce problème?
Aussi, ce que je fais mal?
Avez-vous vérifier cette stackoverflow.com/questions/20471741/...
Je suis passé par la DONC post suggéré par vous. L'OP sur ce post semble être à l'aide de Google+ API et pas Google Drive API. Aussi, il semble, il est à l'aide de smartphone Android à télécharger des fichiers qui n'est pas mon cas.
J'ai oublié d'ajouter que quand j'ai essayé d'exécuter le code d'un an, il marche bien. Le
Je suis passé par la DONC post suggéré par vous. L'OP sur ce post semble être à l'aide de Google+ API et pas Google Drive API. Aussi, il semble, il est à l'aide de smartphone Android à télécharger des fichiers qui n'est pas mon cas.
J'ai oublié d'ajouter que quand j'ai essayé d'exécuter le code d'un an, il marche bien. Le
Quickstart: Run a Drive App in Java
mentionné par les OP dans ce la poste a été modifié/mis à jour depuis. Pour une raison quelconque, il est en train de jeter un com.google.api.client.googleapis.json.GoogleJsonResponseException
maintenant. Je voudrais savoir pourquoi est-il si.
OriginalL'auteur Sandeep Chatterjee | 2015-09-09
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème, j'ai fait la modification suivante et il a résolu le problème
1) Ajouté SheetsScopes.En VOITURE pour les étendues d'être donné à autoriser()
2) a Créé un nouveau répertoire, de sorte que la prochaine fois, je le lance, il s'authentifier et d'enregistrer les informations d'identification pour le nouveau répertoire créé
OriginalL'auteur Suraj
Après un long temps de recherche, j'ai trouvé cette réponse cachée dans le moteur de recherche:
De changer la ligne où vous définissez les étendues:
https://stackoverflow.com/a/38599382/1317559
OriginalL'auteur Yster
J'ai juste eu ce problème et il est probable que vous avez créé le fichier des informations d'identification à l'aide d'un champ d'application qui ne permet pas l'insertion d'un fichier. Supprimer les informations d'identification de fichiers et ré-exécuter.
OriginalL'auteur user5538597
Été ayant le même quota d'erreurs pendant des mois. A tout essayé. Il ressemble problème sur le côté de Google.
Parmi tous les produits google, Calendrier de l'API n'a aucun moyen de soutenir leur équipe. Si quelqu'un sait ou ont été en mesure de contacter Google de l'équipe sur le Calendrier de l'API, laissez-nous savoir!
OriginalL'auteur Roman
Ce problème est arrivé lorsque vous changez de PORTÉE et de continuer à travailler avec l'ancien jeton. Juste enlever StoredCredential fichier.Idée
OriginalL'auteur Vitali Rahin
Pour moi le problème est que l'url http... et il devrait être en https...
OriginalL'auteur SpyZip
J'ai eu le même problème mais dans mon cas résoudre ce avec:
de DriveScopes
et aussi de créer un nouveau répertoire
et j'ai résolu le problème
OriginalL'auteur Cesarov