Gmail-REST-API : 400 Bad Request + Fehlgeschlagen Voraussetzung

Ich versuche, mails zu versenden, basiert auf Gmail REST-API mit google java api-services. Ich habe die Konfiguration durch Google Develover Console-eine client-Anwendung heruntergeladen und p12-und json-Dateien.

Habe ich dieses Beispiel-Programme, https://developers.google.com/gmail/api/guides/sending#sending_messages...

Dieses Beispiel funktioniert, aber dies basiert auf GoogleAuthorizationCodeFlow. Ich will einfach nur, um Arbeit von server-zu-server direkt aufrufen, nicht einen browser öffnen, um ein access token... und ich habe es (das access-token), aber schließlich bekomme ich einen Bad Request.... Warum??? Ich glaube nicht, erhalten Sie mehr info nur als "Bad Request" und "Vorbedingung Fehlgeschlagen"

Basierend auf dieser ich Folgen Sie den nächsten Schritten:

  1. Ersten Schritt: Erstellen Sie eine GoogleCredential-Objekt basierend auf meinem Kunden-Konto E-mail und p12-Datei generiert:

    GoogleCredential  credential = new GoogleCredential.Builder().setTransport(new NetHttpTransport())
                                        .setJsonFactory(new JacksonFactory())
                                        .setServiceAccountId(serviceAccountUserEmail)
                                        .setServiceAccountScopes(scopes)
                                        .setServiceAccountPrivateKeyFromP12File(
                                                    new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))                             
                                                            .build();

Hier muss ich unterstreichen, dass ich viele Themen für die ussing ClientID statt ClientMail. Es muss @developer.gserviceaccount.com Konto statt .apps.googleusercontent.com . Wenn u don ' T senden Sie diese params ok , u erhalten eine "UNGÜLTIGE GEWÄHREN" - Fehler. Dies ist hier erklärt: https://developers.google.com/analytics/devguides/config/mgmt/v3/mgmtAuthorization

  1. Zweiten Schritt : Erstellen des Gmail-Dienstes basierend auf den Anmeldeinformationen:

    Gmail gmailService = new Gmail.Builder(httpTransport,
                                                  jsonFactory,
                                                  credential)
                                                .setApplicationName(APP_NAME)
                                                    .build();
  2. Dritten Schritt Erstellen Sie ein Google-raw-Nachricht von einem MimmeMessage:

    private static Message _createMessageWithEmail(final MimeMessage email) throws MessagingException, IOException {
    
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    email.writeTo(bytes);
    String encodedEmail =       Base64.encodeBase64URLSafeString(bytes.toByteArray());      
    Message message = new Message();    
    message.setRaw(encodedEmail);
    return message;

    }

  3. Vierten Schritt Aufrufen des Dienstes:

        Message message = _createMessageWithEmail(email);
    message = service.users()
    .messages()
    .send(userId,message)
    .execute();
  4. Fünften Schritt : Resultat nach Ausführung...Hier erhalte ich die exception:

Exception in thread "main"

com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
  "code" : 400,
  "errors" : [ {
    "domain" : "global",
    "message" : "Bad Request",
    "reason" : "failedPrecondition"
  } ],
  "message" : "Bad Request"
}
    at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:145)

Eine Idee, was falsch ist oder was ist die Vorbedingung fehlgeschlagen??

  • haben Sie jemals herausgefunden, was falsch war? Ich habe das gleiche Problem.
InformationsquelleAutor Azimuts | 2015-03-29
Schreibe einen Kommentar