के साथ IMAP/SMTP प्रमाणीकरण मैं उपयोगकर्ता नाम और पासवर्ड का उपयोग करने के बजाय एंड्रॉइड के खाता प्रबंधक से प्राप्त टोकन का उपयोग करके एक साधारण IMAP/SMTP जीमेल क्लाइंट को कार्यान्वित करने का प्रयास कर रहा हूं। मैंAuthToken() प्राप्त करने के लिए "mail" को authTokenType पैरामीटर के रूप में उपयोग करने का प्रयास कर रहा हूं।खातामैनेजर टोकन
गूगल 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
साथ एसएमटीपी/IMAP के इस उदाहरण प्रदान करता है, लेकिन यह जावा के लिए है। मेरे एंड्रॉइड प्रोजेक्ट में इसका उपयोग कुछ आयात (एसएएसएल के बारे में) गायब है। उन्हें हल करने के लिए मैं इस पुस्तकालय 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, [email protected], password=<non-null>
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 इस उदाहरण को उनके उदाहरण में नहीं मानता है, लेकिन मुझे लगता है कि यह उपयोगकर्ता के लिए एक आम विशेषता होनी चाहिए।
धन्यवाद।
समस्या तथ्य यह है कि 'com.sun.mail.imap.protocol.IMAPSaslAuthenticator' संदर्भ' javax.security.sasl' वर्ग है जो याद कर रहे हैं से उठता है। आपको संभवतः जावामेल के स्रोत मिलना चाहिए, उदाहरण के लिए, [यहां से] (http://repository.springsource.com/ivy/bundles/external/javax.mail/com.springsource.javax.mail/1.4.5/com। springsource.javax.mail-1.4.5.jar), और 'IMAPSaslAuthenticator' में' org.apache.harmony.javax.security.sasl' कक्षाओं में आयात को बदलें, ['asmack'] में उपलब्ध है (http: // code। google.com/p/asmack/), जैसा कि पहले ही उल्लेख किया गया है। – Stan