Android Oauth Exception con el transporte SMTP se conectan, con Android versión 2.3
Estoy recibiendo el error siguiente cuando intento funcionar mi proyecto del androide después de agregar el nuevo comando de AUTO XOAUTH2. Estoy utilizando el dispositivo androide con la versión os 2.3 pero el mismo código está trabajando muy bien en androide 4.0
public SMTPTransport connectToSmtp(String host, int port, String userEmail,String oauthToken, boolean debug) throws Exception { Properties props = new Properties(); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.starttls.required", "true"); props.put("mail.smtp.sasl.enable", "false"); session = Session.getInstance(props); session.setDebug(debug); final URLName unusedUrlName = null; SMTPTransport transport = new SMTPTransport(session, unusedUrlName); // If the password is non-null, SMTP tries to do AUTH LOGIN. final String emptyPassword = null; transport.connect(host, port, userEmail, emptyPassword); byte[] response = String.format("user=%s\1auth=Bearer %s\1\1", userEmail,oauthToken).getBytes(); response = BASE64EncoderStream.encode(response); transport.issueCommand("AUTH XOAUTH2 " + new String(response),235); return transport; }
Compruebe los registros
- Acceso a Linkedin para una aplicación de Cordova
- Android: verifica el nombre de la cuenta google del dispositivo en el servidor
- Android y OAUTH 2.0
- Autorización Oauth 2.0 para LinkedIn en Android
- Google login obtiene token de acceso con GoogleSignInOptions nuevo
03-21 10:05:08.679: W/System.err(987): javax.mail.MessagingException: 334 eyJzdGF0dXMiOiI0MDAiLCJzY2hlbWVzIjoiQmVhcmVyIiwic2NvcGUiOiJodHRwczovL21haWwuZ29vZ2xlLmNvbS8ifQ== 03-21 10:05:08.679: W/System.err(987): at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1481) 03-21 10:05:08.679: W/System.err(987): at com.swapmeen.test.GMailOauthSender.connectToSmtp(GMailOauthSender.java:48) 03-21 10:05:08.679: W/System.err(987): at com.swapmeen.test.GMailOauthSender.sendMail(GMailOauthSender.java:57) 03-21 10:05:08.679: W/System.err(987): at com.swapmeen.test.MainActivity$1.run(MainActivity.java:64)
- ¿Cómo utilizar el tipo implícito de subvención en OAuth 2.0 para aplicaciones móviles?
- ¿Ejecutar una secuencia de comandos de Google Apps desde la aplicación para Android?
- ¿Cómo usar el inicio de sesión de Samsung OAuth en Android Device?
- ¿Cómo evitar la "Acción completa con" emergente con devoluciones de llamada de OAuth de Google?
- ¿Es seguro guardar los tokens de acceso / actualización de Oauth2 en las Preferencias compartidas de Android?
- Aplicación Android PlusClient y obtención de un token
- ¿Cómo acceder a la nueva API de Gmail desde mi aplicación de Android?
- Oauth 2 en una aplicación para Android
El error que está recibiendo
eyJzdGF0dXMiOiI0MDAiLCJzY2hlbWVzIjoiQmVhcmVyIiwic2NvcGUiOiJodHRwczovL21haWwuZ29vZ2xlLmNvbS8ifQ==
Descodifica a lo siguiente utilizando un decodificador Base64
{"status":"400","schemes":"Bearer","scope":"https://mail.google.com/"}
Lo que esto acaba significado (tan críptico como el mensaje es) es que el token de autenticación que está utilizando ha expirado. Necesita invalidarlo y luego obtener uno nuevo (simplemente solicite el token de nuevo).
Usted invalida el token como este:
mAccountManager.invalidateAuthToken("com.google", mAuthenticationToken);
Espero que esto sea útil 🙂