A craving is a strong desire that you don't have as much control over. You can disagree with a craving. You might have a strong craving for coffee, chocolate, cigarettes, etc.
A desire is something you want. You cannot disagree with a desire of your own. If you desire something it just means that you want it.
A longing is a stronger desire. It's actually probably somewhere between craving and desire, in that it's strong like a craving, but it's something that you definitely want.
A wish is something that you want, but is not as easily attained, or even might be impossible to attain. We don't usually act on our wishes, while we do act on our desires.