【发布时间】:2015-05-14 02:45:02
【问题描述】:
尝试在 Android 应用程序中使用 JavaMail 连接到 imap 商店时出现以下错误:
IMAP 调试:无法加载 SASL 身份验证器:java.lang.NoSuchMethodException:[class com.sun.mail.imap.protocol.IMAPProtocol,class java.lang.String,class java.util.Properties,boolean,class java.io.PrintStream, 类 java.lang.String]
我遇到的问题与此处描述的问题相同: ProGuard java.lang.NoSuchMethodException
...但是将行添加到 proguard 的解决方案没有帮助。
public class OAuth2SaslClientFactory implements SaslClientFactory {
private static final Logger logger =
Logger.getLogger(OAuth2SaslClientFactory.class.getName());
public static final String OAUTH_TOKEN_PROP =
"mail.imaps.sasl.mechanisms.oauth2.oauthToken";
public SaslClient createSaslClient(String[] mechanisms,
String authorizationId,
String protocol,
String serverName,
Map<String, ?> props,
CallbackHandler callbackHandler) {
boolean matchedMechanism = false;
for (int i = 0; i < mechanisms.length; ++i) {
if ("XOAUTH2".equalsIgnoreCase(mechanisms[i])) {
matchedMechanism = true;
break;
}
}
if (!matchedMechanism) {
logger.info("Failed to match any mechanisms");
return null;
}
return new OAuth2SaslClient((String) props.get(OAUTH_TOKEN_PROP),
callbackHandler);
}
public String[] getMechanismNames(Map<String, ?> props) {
return new String[] {"XOAUTH2"};
}
}
public OAuth2Provider() {
super("Google OAuth2 Provider", 1.0,
"Provides the XOAUTH2 SASL Mechanism");
put("SaslClientFactory.XOAUTH2",
"com.app.OAuth2SaslClientFactory");
}
【问题讨论】:
标签: android oauth jakarta-mail sasl