2013-03-21 31 views
7

Tôi nhận được lỗi sau khi tôi cố gắng chạy dự án Android của mình sau khi thêm lệnh AUTH XOAUTH2 mới.Tôi đang sử dụng thiết bị Android có phiên bản os 2.3 nhưng mã giống nhau vẫn hoạt động tốt trên android 4,0Ngoại lệ Oauth của Android với kết nối SMTP Transport kết nối với phiên bản Android 2.3

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; 
} 

Vui lòng kiểm tra các bản ghi

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) 
+0

Tôi cũng đang nhận được ngoại lệ ... thông qua chức năng quét tìm thấy lỗi ở issueCommand() phương pháp vận chuyển. Bất cứ ai cũng đề xuất lệnh nào và kỳ vọng sẽ ở đó cho tài khoản google –

+0

Xin chào, một trong hai bạn đã từng làm việc này chưa? –

Trả lời

5

các lỗi mà bạn đang nhận

eyJzdGF0dXMiOiI0MDAiLCJzY2hlbWVzIjoiQmVhcmVyIiwic2NvcGUiOiJodHRwczovL21haWwuZ29vZ2xlLmNvbS8ifQ== 

giải mã những điều sau đây sử dụng một Base64 Decoder

{"status":"400","schemes":"Bearer","scope":"https://mail.google.com/"} 

Điều này kết thúc nghĩa (như khó hiểu như thông điệp là) là xác thực thẻ mà bạn đang sử dụng đã hết hạn. Bạn cần phải vô hiệu hóa nó và sau đó nhận được một cái mới (chỉ cần yêu cầu mã thông báo một lần nữa).

Bạn làm mất hiệu lực token như thế này:

mAccountManager.invalidateAuthToken("com.google", mAuthenticationToken); 

Tôi hy vọng rằng điều này là hữu ích :)

+1

Tôi đã làm những gì bạn đã đăng nhưng ứng dụng của tôi sẽ nhận được mã thông báo mới, tuy nhiên tôi vẫn nhận được thông báo này ... – Rohan

+0

Cập nhật nhỏ, nó phải là "com.google" chứ không phải "con.google" –

Các vấn đề liên quan