package com.google.sitebricks.mail.oauth; import com.ning.http.util.Base64; /** * @author ilguzin@gmail.com (Denis A. Ilguzin http://youdev.co */ public class Xoauth2Sasl { public static final String ctrlA = "\001"; /** * Builds an XOAUTH2 SASL client response. * <p/> * According to https://developers.google.com/gmail/xoauth2_protocol the SASL XOAUTH2 initial * client response has the following format: * <p/> * {@code base64("user=" {User} "^Aauth=Bearer " {Access Token} "^A^A")} * <p/> * using the base64 encoding mechanism defined in RFC 4648. ^A represents a Control+A (\001). * * @return A base-64 encoded string containing the auth string suitable for login via xoauth2. */ public static String build(String user, String accessToken) { StringBuilder authString = new StringBuilder() .append("user=").append(user) .append(ctrlA).append("auth=Bearer ") .append(accessToken).append(ctrlA).append(ctrlA); return Base64.encode(authString.toString().getBytes()); } }