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

 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) 

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 🙂

  • Las pestañas personalizadas de Chrome de Android / la API web de Fitbit no se redireccionarán si la aplicación ya está autorizada. (OAuth2.0)
  • ¿Cómo puedo enviar un mensaje a un dispositivo usando C2DM desde un servidor que ha sido autenticado con OAuth2?
  • Autenticación de la API de Android Firebase Rest
  • ¿Por qué el método GoogleAuthUtil.getToken () genera dos tipos de tokens?
  • API de datos de Youtube con OAuth2.0 en Android
  • Google http / oauth2 api siempre lanza EOFException para segundo HTTPRequest
  • Obtener el token de autorización de Google oauth desde Android- devolver con invalid_scope / Error desconocido
  • SampleSyncAdapter que almacena la contraseña de texto sin formato?
  • Oauth 2.0: identificación del cliente y secreto del cliente expuestos, ¿es un problema de seguridad?
  • Implementación de OAuth2 con AccountManager, Retrofit y Dagger
  • "FirebaseError: Se proporcionan credenciales de autenticación no válidas" al configurar el inicio de sesión de Google en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.