/** * Create new social connection * * @param provider {@link SocialProvider} * @param accessGrant {@link AccessGrant} * @param socialAccountId social account id. * @param userAccount {@link UserAccount} * @param providerProfileUrl provider profile url. * @return */ public SocialAccount updateSocialAccountConnection( final AccessGrant accessGrant, // OAuth2 final String socialAccountId, final SocialAccount currentSocialAccount) { log.debug("Add Connection " + accessGrant); log.debug("Add Connection " + socialAccountId); // reference to social account. // connection.setSocialAccount(socialAccount); // store oauth provider permissions. if (SocialProvider.getTypeAuth(currentSocialAccount.getAccounType()).equals(TypeAuth.OAUTH1)) { // OAuth access token. // connection.setAccessToken(token.getValue()); // OAuth1 // connection.setSecretToken(token.getSecret()); // TODO: pending OAUTH1. log.debug("pending OAUTH1 - OAuth 1 social connection is not available right now."); } else if (SocialProvider.getTypeAuth(currentSocialAccount.getAccounType()) .equals(TypeAuth.OAUTH2)) { // OAuth2 currentSocialAccount.setAccessToken(accessGrant.getAccessToken()); currentSocialAccount.setRefreshToken(accessGrant.getRefreshToken()); currentSocialAccount.setExpires(accessGrant.getExpires()); } Assert.assertNotNull(socialAccountId); currentSocialAccount.setSocialProfileId(socialAccountId); this.saveOrUpdate(currentSocialAccount); // TODO: this seems not save or update properly. log.debug("Added Connection:{" + currentSocialAccount.toString()); return currentSocialAccount; }
/** * Public Tweet Poll (OAuth method). * * @param tweetText tweet text * @return status of tweet * @throws EnMeExpcetion exception */ public TweetPublishedMetadata publicTweetPoll( final String tweetText, final SocialAccount socialAccount, final Set<HashTag> hashtags) throws EnMeExpcetion { TweetPublishedMetadata published = new TweetPublishedMetadata(); log.debug("publicTweetPoll:{ " + tweetText); if (socialAccount.getAccounType().equals(SocialProvider.TWITTER)) { log.debug("Publish on TWITTER"); final TwitterAPIOperations twitterAPIOperations = new TwitterAPITemplate( EnMePlaceHolderConfigurer.getProperty("twitter.oauth.consumerSecret"), EnMePlaceHolderConfigurer.getProperty("twitter.oauth.consumerKey"), socialAccount); try { published = twitterAPIOperations.updateStatus(tweetText); } catch (Exception e) { log.error(e); e.printStackTrace(); } } else if (socialAccount.getAccounType().equals(SocialProvider.IDENTICA)) { log.debug("Publish on IDENTICA"); final IdenticaAPIOperations identicaAPIOperations = new IdenticaAPITemplate( EnMePlaceHolderConfigurer.getProperty("identica.consumer.key"), EnMePlaceHolderConfigurer.getProperty("identica.consumer.secret"), socialAccount.getAccessToken(), socialAccount.getSecretToken()); try { log.debug("Publish on Identica............>"); published = identicaAPIOperations.updateStatus(tweetText); log.debug("Publish on Identica...... " + published); } catch (Exception e) { published.setDatePublished(Calendar.getInstance().getTime()); log.error(e); e.printStackTrace(); } } else if (socialAccount.getAccounType().equals(SocialProvider.PLURK)) { log.debug("Publish on PLURK"); final PlurkAPIOperations tumblrAPIOperations = new PlurkAPITemplate( EnMePlaceHolderConfigurer.getProperty("plurk.consumer.key"), EnMePlaceHolderConfigurer.getProperty("plurk.consumer.secret"), socialAccount.getAccessToken(), socialAccount.getSecretToken()); try { log.debug("Publish on Identica............>"); published = tumblrAPIOperations.updateStatus(tweetText); log.debug("Publish on Identica...... " + published); } catch (Exception e) { published.setDatePublished(Calendar.getInstance().getTime()); log.error(e); e.printStackTrace(); } } else if (socialAccount.getAccounType().equals(SocialProvider.TUMBLR)) { log.debug("Publish on TUMBLR"); final TumblrAPIOperations tumblrAPIOperations = new TumblrAPITemplate( EnMePlaceHolderConfigurer.getProperty("tumblr.consumer.key"), EnMePlaceHolderConfigurer.getProperty("tumblr.consumer.secret"), socialAccount.getAccessToken(), socialAccount.getSecretToken()); try { log.debug("Publish on TUMBLR............>"); published = tumblrAPIOperations.updateStatus(tweetText, socialAccount, hashtags); log.debug("Publish on TUMBLR...... " + published); } catch (Exception e) { published.setDatePublished(Calendar.getInstance().getTime()); log.error(e); e.printStackTrace(); } } else if (socialAccount.getAccounType().equals(SocialProvider.FACEBOOK)) { log.debug("Publish on FACEBOOK"); FacebookAPIOperations facebookAPIOperations = new FacebookAPITemplate(socialAccount.getAccessToken()); try { log.debug("Publish on FACEBOOK............>"); published = facebookAPIOperations.updateStatus(tweetText); log.debug("Publish on FACEBOOK...... " + published); published.setDatePublished(Calendar.getInstance().getTime()); } catch (HttpClientErrorException e) { log.error("-----------------------FACEBOOK EXPIRED TOKEN----------------------- 1"); log.error(e.getStatusCode()); log.error(e.getResponseBodyAsString()); log.error(e.getStatusText()); published.setDatePublished(Calendar.getInstance().getTime()); // refresh token point. // offline_access scope permission is enabled by default . In this case // https://developers.facebook.com/docs/authentication/permissions/ log.error("-----------------------FACEBOOK EXPIRED TOKEN----------------------- 2"); e.printStackTrace(); } catch (Exception e) { published.setDatePublished(Calendar.getInstance().getTime()); log.error(e); e.printStackTrace(); } } else if (socialAccount.getAccounType().equals(SocialProvider.LINKEDIN)) { log.debug("Publish on LinkedIn"); LinkedInAPIOperations linkedInAPIOperations = new LinkedInAPITemplate( EnMePlaceHolderConfigurer.getProperty("linkedIn.oauth.api.key"), EnMePlaceHolderConfigurer.getProperty("linkedIn.oauth.api.secret"), socialAccount.getAccessToken(), socialAccount.getSecretToken()); try { log.debug("Publish on LinkedIn 1............>"); published = linkedInAPIOperations.updateStatus(tweetText); published.setTextTweeted(tweetText); published.setDatePublished(Calendar.getInstance().getTime()); published.setTweetId(RandomStringUtils.randomAscii(15)); log.debug("Publish on LinkedIn 2...... " + published); } catch (Exception e) { published.setDatePublished(Calendar.getInstance().getTime()); log.error(e); e.printStackTrace(); } } else if (socialAccount.getAccounType().equals(SocialProvider.GOOGLE_BUZZ)) { BuzzAPIOperations buzzInAPIOperations = new GoogleBuzzAPITemplate(socialAccount); try { log.debug("Publish on LinkedIn............>"); published = buzzInAPIOperations.updateStatus(tweetText); published.setTextTweeted(tweetText); published.setDatePublished(Calendar.getInstance().getTime()); published.setTweetId(RandomStringUtils.randomAscii(15)); log.debug("Publish on LinkedIn...... " + published); } catch (Exception e) { published.setDatePublished(Calendar.getInstance().getTime()); log.error(e); e.printStackTrace(); } } if (published != null) { log.debug("publicTweetPoll:s " + published.toString()); } return published; }