Flutter Web集成Okta OAuth2:新窗口回调参数与Cookie获取问题
DIO调用授权端点的重定向问题
我开发了一个Flutter Web应用,正在集成Okta OAuth2认证功能。使用DIO包调用构造好的授权端点URL时,DIO会自动跟进302重定向,最终返回回调地址对应的Flutter HTML内容,而非预期的重定向响应。
授权端点示例:
https://dev-xxxxxxxx.okta.com/oauth2/default/v1/authorize?response_type=code&scope=openid+profile+offline_access&client_id=xxxxxxxxxxxxxxxxxxxx&redirect_uri=http://localhost:8080/authorization-code/callback&code_challenge_method=S256&code_challenge=Wag0u2fyeYWJHy_baK-XbMWO9H2xwUBii7R4Nvj761Y&sessionToken=20111jWBb2P2BoPIL-Atd0pk5QDImstT7EmYULPFMg2GoCGPgOrxKFl&state=X7hih1mUow&nonce=lSfF1CxmmR
调用后会重定向至回调地址:
http://localhost:8080/authorization-code/callback?code=TCifQEab0a6HwEGeWQXlDQhPm22RlyemvO5GbipASEU&state=YLi4I2P4qd
我需要禁止DIO自动重定向,直接返回302状态码,但目前无法实现。
新窗口打开授权URL后的参数提取问题
转而尝试在新窗口打开授权URL,窗口会自动跳转到回调地址,但遇到以下问题:
- 无法提取回调URL中的
code参数 - 无法获取该URL设置的Cookie
代码示例:
final html.WindowBase newWindow = html.window.open(url, "callback");
限制:newWindow.location.href为只读属性,无法获取跳转后的地址。
内容的提问来源于stack exchange,提问作者Yahya

