We make shakers for nearly every holiday and my daughter just loves them. We buy the little containers at the dollar store (usually 8-10 in a pack for $1), use whatever we have in our pantry to fill them up, and then tape them shut.
This time I tried double stick tape along the inside lip of the heart. Worked like a charm for my daughter, but it took our 3 year-old neighbor all of 30 seconds to open his and send garbanzo beans flying. I've also tried super glue and 3 part epoxy, but nothing stands the test of being dropped, thrown, and pulled apart than good old Scotch tape. No matter what I've tried in the past I have always ended up using tape in the end. So, just stick to tape.