They should take a lesson from the spotify API, friend listening feeds are out of reach for third party apps.
Since facebook apps request these fields so much, they could implement it as an opt-in/out checkbox "Do you want your data to be accessible by 3rd party apps without your consent through your friends?"
This way, if an app request friends access, they would get data only from the ones that allowed it.
It probably would remove a lot of value that can be extracted from their users, but facebook itself would still have all this data to use internally to target ads and they would limit the amount of data that can be exfiltrated to malicious 3rd parties without the consent of users.