Ja, @Dalmto weist darauf hin, dass die Client-Bibliothek diejenige ist, die all dies behandeln sollte.
Ein besseres Design besteht darin, Benutzeranmeldeinformationen für Ihre Anwendung in einem Verzeichnis zu speichern.
private static final java.io.File DATA_STORE_DIR = new java.io.File(
System.getProperty("user.home"), ".store/mail_credentials");
nun eine globale Instanz für FileDataStoreFactory
machen.
private static FileDataStoreFactory DATA_STORE_FACTORY;
Instantiate DATA_STORE_FACTORY
vor Anmeldeinformationen vorzugsweise in einem statischen Block zu bekommen.
DATA_STORE_FACTORY = new FileDataStoreFactory(DATA_STORE_DIR);
herunterladen und speichern Sie die client_secret.json
von Google Developer-Konsole. Verwenden Sie die folgende Methode Anmeldeinformationen zu erhalten:
public static Credential authorize() throws IOException {
// Load client secrets.
InputStream in
= GmailQuickStart.class.getResourceAsStream("/client_secrets.json");
GoogleClientSecrets clientSecrets
= GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
// Build flow and trigger user authorization request.
GoogleAuthorizationCodeFlow flow
= new GoogleAuthorizationCodeFlow.Builder(
HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
.setDataStoreFactory(DATA_STORE_FACTORY)
.setAccessType("offline")
.build();
Credential credential = new AuthorizationCodeInstalledApp(
flow, new LocalServerReceiver()).authorize("user");
System.out.println(
"Credentials saved to " + DATA_STORE_DIR.getAbsolutePath());
return credential;
}
Jedes Mal, wenn die obige Methode aufgerufen wird, sieht es für die StoredCredential
auf dem Weg zu DATA_STORE_DIR
zur Verfügung gestellt. Wenn es gefunden wird, wird der Code so ausgeführt, wie er ist. Ist dies nicht der Fall, öffnet sich ein Browser, der Sie zur Anmeldung und Autorisierung Ihrer App auffordert. Die als solche generierten Anmeldedaten werden im Verzeichnis DATA_STORE_DIR
gespeichert. Solange die StoredCredential
vorhanden ist, wird Ihre App keine Erlaubnis anfordern. Dies ist ein Design für allgemeine Zwecke, das auch für andere Google-APIs verwendet werden kann.
Ich bin kein Java-Experte, aber die Client-Bibliothek sollte alles für Sie behandeln haben Sie versucht, dieses Tutorial zu lesen? https://developers.google.com/gmail/api/quickstart/java#prerequisites – DaImTo
Vielen Dank - DalmTo! Ja, ich habe versucht, es zu lesen und finde es schrecklich stumpf .. Ich werde versuchen, über die Bibliothek gehen tho –
Es ist sehr verwirrend, wenn Sie anfangen, Google APIs zu verwenden. Ich kann nicht mit Java helfen, aber vielleicht kann ich Ihnen helfen, ein wenig zu führen. GoogleAuthorizationCodeFlow handhabt das Anfordern von Auth von dem Benutzer und speichert die Authentifizierung (keine Ahnung, wo in Java) refreshtoken und ein Zugriffstoken. getGmailService wird Ihnen Zugriff auf die API geben, um ein neues Zugriffstoken zu holen, wenn und falls es eines benötigt. Alles, was Sie tun, wird der Google Mail-Dienst sein – DaImTo