Идентификация IMAP/SMTP с символом AccountManager

Я пытаюсь осуществить простого клиента Gmail IMAP/SMTP, использующего символ, полученный от AccountManager Android вместо того, чтобы использовать имя пользователя и пароль. Я пытаюсь использовать "почту" в качестве authTokenType параметр к getAuthToken ().

Google provides this example of SMTP/IMAP with oauth2 http://code.google.com/p/google-mail-oauth2-tools/source/browse/#svn%2Ftrunk%2Fjava%2Fcom%2Fgoogle%2Fcode%2Fsamples%2Foauth2 http://code.google.com/p/google-mail-oauth2-tools/wiki/JavaSampleCode

but it is for java. Using it in my Android project there is some import (about SASL) missing. To solve them I use this library http://code.google.com/p/asmack/

Пример собирает, но я замечаю проблему во времени выполнения

10-04 10:05:44.715: I/System.out(1226): DEBUG: setDebug: JavaMail version 1.4.1
10-04 10:05:44.750: I/System.out(1226): DEBUG: mail.imap.fetchsize: 16384
10-04 10:05:44.750: I/System.out(1226): DEBUG: enable SASL
10-04 10:05:44.750: I/System.out(1226): DEBUG: SASL mechanisms allowed: XOAUTH2
10-04 10:05:46.137: I/System.out(1226): * OK Gimap ready for requests from 84.221.66.29 o42if871216eef.60
10-04 10:05:46.137: I/System.out(1226): A0 CAPABILITY
10-04 10:05:46.805: I/System.out(1226): * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH AUTH=XOAUTH2
10-04 10:05:46.805: I/System.out(1226): A0 OK Thats all she wrote! o42if871216eef.60
10-04 10:05:46.805: I/System.out(1226): IMAP DEBUG: AUTH: XOAUTH
10-04 10:05:46.805: I/System.out(1226): IMAP DEBUG: AUTH: XOAUTH2
10-04 10:05:46.813: I/System.out(1226): DEBUG: protocolConnect login, host=imap.gmail.com, user=xx[email protected], password=
10-04 10:05:46.813: I/dalvikvm(1226): Could not find method javax.security.sasl.Sasl.createSaslClient, referenced from method com.sun.mail.imap.protocol.IMAPSaslAuthenticator.authenticate
10-04 10:05:46.813: W/dalvikvm(1226): VFY: unable to resolve static method 44358: Ljavax/security/sasl/Sasl;.createSaslClient ([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Ljavax/security/auth/callback/CallbackHandler;)Ljavax/security/sasl/SaslClient;
10-04 10:05:46.813: D/dalvikvm(1226): VFY: replacing opcode 0x77 at 0x0050
10-04 10:05:46.813: W/dalvikvm(1226): VFY: unable to resolve exception class 5975 (Ljavax/security/sasl/SaslException;)
10-04 10:05:46.813: W/dalvikvm(1226): VFY: unable to find exception handler at addr 0x83
10-04 10:05:46.844: W/dalvikvm(1226): VFY:  rejected Lcom/sun/mail/imap/protocol/IMAPSaslAuthenticator;.authenticate ([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
10-04 10:05:46.844: W/dalvikvm(1226): VFY:  rejecting opcode 0x0d at 0x0083
10-04 10:05:46.844: W/dalvikvm(1226): VFY:  rejected Lcom/sun/mail/imap/protocol/IMAPSaslAuthenticator;.authenticate ([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
10-04 10:05:46.844: W/dalvikvm(1226): Verifier rejected class Lcom/sun/mail/imap/protocol/IMAPSaslAuthenticator;
10-04 10:05:46.844: I/System.out(1226): IMAP DEBUG: Can't load SASL authenticator: java.lang.ClassNotFoundException: com.sun.mail.imap.protocol.IMAPSaslAuthenticator
10-04 10:05:46.844: I/System.out(1226): A1 LOGIN [email protected] anonymous
10-04 10:05:48.137: I/System.out(1226): A1 NO [AUTHENTICATIONFAILED] Invalid credentials (Failure)
10-04 10:05:48.164: W/System.err(1226): javax.mail.AuthenticationFailedException: [AUTHENTICATIONFAILED] Invalid credentials (Failure)
10-04 10:05:48.176: W/System.err(1226):         at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:566)
10-04 10:05:48.176: W/System.err(1226):         at javax.mail.Service.connect(Service.java:288)
10-04 10:05:48.176: W/System.err(1226):         at xxx.xxx.xxx.OAuth2Authenticator.connectToImap(OAuth2Authenticator.java:111)
10-04 10:05:48.180: W/System.err(1226):         at xxx.xxx.xxx.OAuth2Authenticator.initialize(OAuth2Authenticator.java:60)
10-04 10:05:48.180: W/System.err(1226):         at xxx.xxx.xxx.TR_Incoming.onTimeout(TR_Incoming.java:106)
10-04 10:05:48.180: W/System.err(1226):         at xxx.xxx.xxx.AlarmThread$1.handleMessage(AlarmThread.java:80)
10-04 10:05:48.180: W/System.err(1226):         at android.os.Handler.dispatchMessage(Handler.java:99)
10-04 10:05:48.180: W/System.err(1226):         at android.os.Looper.loop(Looper.java:137)
10-04 10:05:48.180: W/System.err(1226):         at xxx.xxx.xxx.AlarmThread.run(AlarmThread.java:94)

это кажется этим, asmack использует org.apache.harmony.javax.security.* вместо javax.security.*

Кто-либо столкнулся с этой проблемой? Google, кажется, не рассматривает эту возможность в их примере, но я думаю, что это должна быть типичная функция пользователя.

Спасибо.

6
nl ja de
Проблема является результатом факта тот com.sun.mail.imap.protocol. IMAPSaslAuthenticator ссылки javax.security.sasl классы, которые отсутствуют. Необходимо возможно получить javamail' s источники, например, отсюда, и изменение импортирует в IMAPSaslAuthenticator , чтобы org.apache.harmony.javax.security.sasl классы, доступные в asmack, как уже был отмечен.
добавлено автор Stan, источник

2 ответы

In order to use the ASMACK Authenticator with JavaMail I created a patched version of the library available here: http://www.mannaz.at/codebase/imap-ssl-mail-android/

Это на основе http://code.google.com/p/javamail-android/ но поддерживает удостоверение ASMACK SASSL.

Этот класс отсутствует в файле БАНКИ. Просто добавьте его к своему исходному коду:

package com.falott.ingresss.util;
public class Log {
    public static boolean loggingEnabled(){
       return false;
    }
}
4
добавлено
Да, я забыл удалять ту ссылку. Просто создайте статический фиктивный метод в классе под тем пакетом, и необходимо быть в порядке.
добавлено автор Mannaz, источник
Привет, я следовал инструкциям на вашей стороне, но я получаю эту ошибку, когда запрос connectToImap : 08-24 22:22:51.967: W/ dalvikvm (31957): VFY: неспособный решить статический метод 4410: Lcom/ falott/ ingresss/ util/ Регистрация; .loggingEnabled() Z 08-24 22:22:51.967: W/ dalvikvm (31957): VFY: неспособный решить статический метод 4410: Lcom/ falott/ ingresss/ util/ Регистрация; .loggingEnabled() Z Какие-либо идеи?
добавлено автор Eugene S, источник
Привет, я хотел бы восстановить исправленную версию с очень последней явской почтой (чтобы зафиксировать некоторый Gmail / ошибки IMAP), вы могли, пожалуйста, позволить мне (нас), знают, как сделать?
добавлено автор Pascal, источник
Mannaz, вы могли, пожалуйста, связаться со мной? Я хотел бы достигнуть того же самого, как вы сделали с удостоверением ASMACK, но с очень последней Явской Почтой. Спасибо заранее
добавлено автор Pascal, источник

От регистрации похоже, что у вас есть java6 и java7 перепутанные файлы. Можно ли разделить детали пути к классу.

Другая возможность состоит в том, что у вас нет правильных верительных грамот, или логин или pwd неправильные.

Я попробовал то, что вы имеете, и это работало, должно быть прямым.

1
добавлено
Мы говорим о системе андроида здесь.
добавлено автор Mannaz, источник
Действительно ли возможно, что он взял неправильные почтовые файлы банки и включал его в проект? Класс, который является, "не мог найти, находится только в java7". Также пример, на который он смотрит, по всей вероятности не андроид рабочий пример. Это - Ява рабочий пример. Я подозревал бы..
добавлено автор Siddharth, источник
Хорошо, я теперь использую github.com/ruiaraujo/javamail_android it' s хорошо
добавлено автор Pascal, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)