Я использую код от this link для доступа к серверу imap gmail, потому что я не смог найти порт javamail для Android с поддержкой OAUTH (javamail 1.5.2 или новее).Внедрение образца кода для аутентификации в Gmail с помощью OAuth2
Однако проблема с этим кодом:
public static IMAPStore connectToImap(String host, int port, String userEmail, String oauthToken, boolean debug) throws Exception {
Properties props = new Properties();
props.put("mail.imaps.sasl.enable", "true");
props.put("mail.imaps.sasl.mechanisms", "XOAUTH2");
props.put(OAuth2SaslClientFactory.OAUTH_TOKEN_PROP, oauthToken);
Session session = Session.getInstance(props);
session.setDebug(debug);
final URLName unusedUrlName = null;
IMAPSSLStore store = new IMAPSSLStore(session, unusedUrlName);
final String emptyPassword = "";
store.connect(host, port, userEmail, emptyPassword);
return store;
}
является то, что новый объект магазина создается каждый раз, когда маркер аутентификации изменяется (истекает). И тогда я должен создать новую папку и читать мои сообщения снова ...
Мой вопрос:
Можно ли изменить токен аутентификации без создания нового объекта Store
? Я хотел бы быть в состоянии осуществить что-то вроде
store.connect("imap.gmail.com", username, oauth2_access_token)
(например, из JavaMail 1.5.2), чтобы воссоединиться, без необходимости воссоздания Store
объекта.
спасибо!
Является ли истечение токена аутентификации, вызывающего отключение активного соединения? Если вам нужно создать новое соединение с тем же хранилищем, вы должны установить свойство в новое значение и создать новое соединение, не создавая новый объект Store. –
Это именно то, что я хочу. Для повторного подключения с использованием того же объекта Store и нового токена аутентификации. Но как это сделать (токен авторизации задается в объекте Properties), следуя опубликованному коду? – milosh
Снова вызовите props.put новым токеном. –