1
我正嘗試使用IMAP和OAuth讀取Gmail收件箱。 當使用基本的主要方法,一切工作正常:Google Gmail返回的空密碼OAuth
private static final String SCOPE = "https://mail.google.com/";
private static final String CONSUMER_KEY = "www.******.com";
private static final String CONSUMER_SECRET = "******";
private static final String USER_EMAIL = "******";
public static void main(String[] args) throws Exception {
GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
OAuthSigner signer = new OAuthHmacSha1Signer();
GoogleOAuthHelper oauthHelper = new GoogleOAuthHelper(signer);
oauthParameters.setScope(SCOPE);
oauthHelper.getUnauthorizedRequestToken(oauthParameters);
String requestUrl = oauthHelper.createUserAuthorizationUrl(oauthParameters);
System.out.println(requestUrl);
System.out.println("Please visit the URL above to authorize your OAuth "
+ "request token. Once that is complete, press any key to "
+ "continue...");
System.in.read();
String token = oauthHelper.getAccessToken(oauthParameters);
System.out.println("OAuth Access Token: " + token);
System.out.println();
//IMAP
XoauthAuthenticator.initialize();
IMAPSSLStore imapSslStore = XoauthAuthenticator.connectToImap("imap.googlemail.com",
993,
USER_EMAIL,
oauthParameters.getOAuthToken(),
oauthParameters.getOAuthTokenSecret(),
new OAuthConsumer(null, CONSUMER_KEY, CONSUMER_SECRET, null),
true);
System.out.println("Successfully authenticated to IMAP.\n");
}
,但是,當我向3腿OAuth的移動,我又回到空的訪問令牌的祕密,這是控制器代碼:
private static final String CALLBACK = "http://www.*******.com/oauthback.htm";
private static final String SCOPE = "https://mail.google.com/";
private static final String CONSUMER_KEY = "www.******.com";
private static final String CONSUMER_SECRET = "******";
private static final String USER_EMAIL = "******";
@RequestMapping("/oauth.htm")
public void oauth(HttpServletResponse response, HttpSession session) throws OAuthException, IOException,
Base64DecoderException, InvalidKeySpecException, NoSuchAlgorithmException {
GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oauthParameters.setOAuthCallback(CALLBACK);
oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
oauthParameters.setScope(SCOPE);
OAuthSigner signer = new OAuthHmacSha1Signer();
GoogleOAuthHelper oauthHelper = new GoogleOAuthHelper(signer);
oauthHelper.getUnauthorizedRequestToken(oauthParameters);
String requestUrl = oauthHelper.createUserAuthorizationUrl(oauthParameters);
System.out.println(requestUrl);
String accessTokenSecret = oauthParameters.getOAuthTokenSecret();
System.out.println("OAuth Access Token's Secret: " + accessTokenSecret);
session.setAttribute("accessTokenSecret", accessTokenSecret);
response.sendRedirect(requestUrl);
}
@RequestMapping("/oauthback.htm")
public String oauthback(HttpServletRequest request, HttpSession session, Model model) throws Exception {
GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
GoogleOAuthHelper oauthHelper = new GoogleOAuthHelper(new OAuthHmacSha1Signer());
oauthHelper.getOAuthParametersFromCallback(request.getQueryString(), oauthParameters);
String accessToken = oauthParameters.getOAuthToken();
System.out.println("OAuth Access Token: " + accessToken);
String accessTokenSecret = oauthParameters.getOAuthTokenSecret();
System.out.println("OAuth Access Token's Secret: " + accessTokenSecret);
//IMAP
XoauthAuthenticator.initialize();
IMAPSSLStore imapSslStore = XoauthAuthenticator.connectToImap("imap.googlemail.com",
993,
USER_EMAIL,
accessToken,
accessTokenSecret,
new OAuthConsumer(CALLBACK, CONSUMER_KEY, CONSUMER_SECRET, null),
true);
System.out.println("Successfully authenticated to IMAP.\n");
model.addAttribute("msg", "accessToken: " + accessToken + " accessTokenSecret: " + accessTokenSecret);
return "errorView";
}
什麼我做錯了?我敢肯定,這是簡單的東西 - 但我只是想太久:)
我想實現這個解決方案可以請告知哪裏你找到了這個罐子。兩年後 - 這仍然是最好的解決方案嗎? – Dan 2013-06-11 16:41:17