I still don’t know the resolution, but it appears the iframe is loading https://www.twitch.tv/login which is not the correct endpoint for token renewal I imagine.
In the network tab in my browser I can see it makes a request to https://id.twitch.tv/oauth2/authorize which then returns a 302(HTTP redirect response code). For some reason /authorize is redirecting me to the Twitch sign in page. However, if I load the full /authorize URI in my browser directly, it works as intended and redirects to the silent renew page.
So, when placed in an iframe, the request to /authorize appears to be redirected to /login incorrectly.
Any ideas? Thanks.