int authProvider = credential.getAuthProvider();
OAuthService service = getOAuthService(authProvider);
if (service == null)
{
throw new OurException("Could not build OAuthService");
}
if (authProvider == ClientUtils.TWITTER ||
authProvider == ClientUtils.YAHOO ||
authProvider == ClientUtils.LINKEDIN ||
authProvider == ClientUtils.FLICKR ||
authProvider == ClientUtils.IMGUR ||
authProvider == ClientUtils.TUMBLR ||
authProvider == ClientUtils.VIMEO)
{
String authProviderName = ClientUtils.getAuthProviderName(authProvider);
logger.info(authProviderName + " requires Request token first.. obtaining..");
try
{
requestToken = service.getRequestToken();
logger.info("Got request token: " + requestToken);
// we must save in the session. It will be required to
// get the access token
saveRequestTokenToSession(requestToken);
}
catch(Exception e)
{
String stackTrace = stackTraceToString(e);
throw new OurException("Could not get request token for " + authProvider + " " + stackTrace);
}
}
logger.info("Getting Authorization url...");
try
{
authorizationUrl = service.getAuthorizationUrl(requestToken);
// Facebook has optional state var to protect against CSFR.
// We'll use it
if (authProvider == ClientUtils.FACEBOOK ||
authProvider == ClientUtils.GITHUB ||
authProvider == ClientUtils.INSTAGRAM)
{
String state=makeRandomString();
authorizationUrl+="&state=" + state;
saveStateToSession(state);
}
}
catch(Exception e)
{
String st = LogUtil.stackTraceToString(e);
throw new OurException("Could not get Authorization url: " + st);
}
if (authProvider == ClientUtils.FLICKR)
{
authorizationUrl += "&perms=read";