@Override
  public void clearSessionCache(Context context) {
    try {
      if (session != null) {

        UserProviderCredentialsMap userProviderCredentialsMap =
            session.getUserProviderCredentials();

        if (userProviderCredentialsMap != null) {
          Collection<UserProviderCredentials> values = userProviderCredentialsMap.values();
          for (UserProviderCredentials userProviderCredentials : values) {
            AuthProviderInfo authProviderInfo = userProviderCredentials.getAuthProviderInfo();
            if (authProviderInfo != null) {
              clear3rdPartySession(context, authProviderInfo.getType());
            }
          }
        }

        session = null;
      }
    } finally {
      if (userSystem != null) {
        userSystem.clearSession();
      }
    }
  }
  /*
   * (non-Javadoc)
   * @see com.socialize.SocializeService#isAuthenticated(com.socialize.auth.AuthProviderType)
   */
  @Override
  public boolean isAuthenticated(AuthProviderType providerType) {
    if (isAuthenticated()) {

      if (providerType.equals(AuthProviderType.SOCIALIZE)) {
        return true;
      }

      UserProviderCredentials userProviderCredentials =
          session.getUserProviderCredentials(providerType);

      if (userProviderCredentials != null) {
        // Validate the credentials
        AuthProviderInfo authProviderInfo = userProviderCredentials.getAuthProviderInfo();

        if (authProviderInfo != null) {
          AuthProvider<AuthProviderInfo> provider = authProviders.getProvider(providerType);

          boolean valid = provider.validate(authProviderInfo);

          return valid;
        }

        return false;
      }
    }

    return false;
  }
  @Override
  public void clear3rdPartySession(Context context, AuthProviderType type) {
    try {
      if (session != null) {
        AuthProvider<AuthProviderInfo> provider = authProviders.getProvider(type);

        if (provider != null) {
          UserProviderCredentials userProviderCredentials =
              session.getUserProviderCredentials(type);

          if (userProviderCredentials != null) {
            AuthProviderInfo authProviderInfo = userProviderCredentials.getAuthProviderInfo();
            if (authProviderInfo != null) {
              provider.clearCache(context, authProviderInfo);
            }
          }
        }

        session.clear(type);
      }
    } finally {
      if (userSystem != null) {
        userSystem.clearSession(type);
      }
    }
  }
 public boolean validateSessionAuthData(SocializeSession loaded, AuthProviderInfo info) {
   UserProviderCredentialsMap userProviderCredentialsMap = loaded.getUserProviderCredentials();
   if (userProviderCredentialsMap != null) {
     UserProviderCredentials userProviderCredentials =
         userProviderCredentialsMap.get(info.getType());
     if (userProviderCredentials != null
         && userProviderCredentials.getAuthProviderInfo().matches(info)) {
       return true;
     }
   }
   return false;
 }