Привет всем, я написал приложение, захватывающее фотографии из facebook. Я сделал это успешно. Теперь я написал службу уведомлений, используя SNS в java. В основном рассылка подписки для первых пользователей, которые входят в мое приложение, а также когда фотография была удалена из репозитория. Моя первая проблема заключается в том, когда я загружаю фотографии и информацию о пользователях из facebook, я хочу проверить, есть ли у нее новый пользователь или нет. Если новый пользователь отправляет подписку, а если нет (в основном пользователь существует в mongoDb, не отправляйте электронную почту для подписки), но мой код продолжает отправлять электронную почту каждому пользователю. И, наконец, когда пользователь удаляет фотографию, они получают уведомление, но когда я его протестировал, я не смог получить электронное письмо. Ниже мой код может кто-то сказать мне, что я делаю неправильно.SNS aws не работает должным образом
public class EmailNotifications {
private static final String accessKey = "****************";
private static final String secretAccess ="***********************";
//Notification when user gets info from facebook app for first time.
public static void SignUP(String email, String Topic){
AmazonSNSClient snsClient = new AmazonSNSClient(new BasicAWSCredentials(accessKey, secretAccess));
snsClient.setRegion(Region.getRegion(Regions.US_WEST_1));
//create a Topic
CreateTopicRequest createTopicRequest = new CreateTopicRequest().withName(Topic);
CreateTopicResult createTopicResult = snsClient.createTopic(createTopicRequest);
//subscribes to a topic
SubscribeRequest subscribeRequest = new SubscribeRequest().withTopicArn(createTopicResult.getTopicArn())
.withProtocol("email").withEndpoint(email);
snsClient.subscribe(subscribeRequest);
}
//Notification when photo is deleted
public static void deletePic(String email, String topic, String message){
AmazonSNSClient snsClient = new AmazonSNSClient(new BasicAWSCredentials(accessKey,secretAccess));
snsClient.setRegion(Region.getRegion(Regions.US_WEST_1));
CreateTopicRequest create = new CreateTopicRequest(topic);
CreateTopicResult result = snsClient.createTopic(create);
System.out.println(result);
//String msg = "My text published to SNS topic with email endpoint";
PublishRequest publishRequest = new PublishRequest(result.getTopicArn(), message);
publishRequest.setSubject("Deleted Pic");
/*PublishResult pu= */snsClient.publish(publishRequest);
}
}
Ниже моя реализация как удалить и захвата данных для первого при условии, MongoDB пуст:
Удаление реализации фото:
@Override
//deletes photo from mongoDB... but doesn't send out an email stating phootid
public String deletePhoto(String id, String PhotoId){
String mssg="";
if(accountRepo.exists(id)){
UserAccounts userAccounts=accountRepo.findById(id);
UserPhotos photos = photoRepo.findByPhotoId(PhotoId);
mssg="The picture "+photos.getPhotoId()+" has been deleted from the application";
EmailNotifications.deletePic(userAccounts.getEmail(),topic,mssg);
photoRepo.delete(PhotoId);
return "Photo is deleted";
}
else
return "Photo does not exist";
}
Схватив фото с лица для первый раз. Пользователь должен получить только одно уведомление max. Но я продолжаю получать несколько сообщений.
@Override
public UserAccounts create(FacebookClient facebookClient){
User me = facebookClient.fetchObject("me", User.class);
UserAccounts userAccounts = new UserAccounts();
userAccounts.setEmail(me.getEmail());
userAccounts.setGender(me.getGender());
userAccounts.setId(me.getId());
userAccounts.setName(me.getName());
accountRepo.save(userAccounts);
EmailNotifications.SignUP(me.getEmail(), topic);
return userAccounts;
}
Может кто-нибудь помочь мне в этом