The URL is incomplete!
I’m thinking that you did not URL encode the redirect URI. So the problem is that you never actually requested the scope. As it gets tacked onto the end of your redirect URI instead of being correctly passed to Twitch
So
$url = 'https://id.twitch.tv/oauth2/authorize?client_id=mk1f6m29hrqzdu8hwqfydg5r6lrf3l&redirect_uri=' . urlencode('https://yourredirect/') . '&scope=user:read:email'