You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter使用flutter_web_auth实现Google OAuth2登录后无法跳转回应用

问题根因

你当前的配置核心问题出在回调链路的跳转逻辑上:

  • 授权请求中传入的redirect_uri是服务端HTTPS地址,Google授权完成后浏览器会直接加载该服务端地址,不会触发跳转回你的App
  • 你在AndroidManifest中注册的是my.app自定义Scheme,只有当浏览器重定向到my.app://开头的地址时,系统才会识别并拉起你的App,触发flutter_web_auth的回调逻辑
修复步骤

1. 调整服务端回调逻辑

修改你服务端的https://sl-cinema.herokuapp.com/oauth2/callback/google接口逻辑:

  • 接口拿到Google返回的授权码、完成Token交换后,不要返回任何页面内容,直接返回302重定向响应,重定向地址为你的App自定义Scheme地址,同时把生成的token作为参数拼接,示例重定向地址:my.app://oauth/callback/google?token=你的实际token值

2. 修复AndroidManifest配置(适配Android 12+)

如果你的应用 targetSdkVersion >= 31(Android 12及以上),需要给CallbackActivity添加android:exported="true"属性,否则系统无法识别该回调入口,修改后配置如下:

<activity android:name="com.linusu.flutter_web_auth.CallbackActivity" 
    android:exported="true">
       <intent-filter android:label="flutter_web_auth">
           <action android:name="android.intent.action.VIEW" />
           <category android:name="android.intent.category.DEFAULT" />
           <category android:name="android.intent.category.BROWSABLE" />
           <data android:scheme="my.app" />
       </intent-filter>
   </activity>

3. 可选:iOS端补充配置

如果同时适配iOS,需要在项目的Info.plist中添加自定义Scheme注册:

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>my.app</string>
    </array>
  </dict>
</array>
验证效果

修改完成后重新走登录流程即可:
用户完成Google授权后,服务端会自动重定向到你的App自定义Scheme地址,系统会自动拉起你的App,flutter_web_auth会自动捕获回调地址并返回给Dart层,同时关闭当前的授权WebView,你直接解析返回的地址拿到token即可。

内容的提问来源于stack exchange,提问作者Maneesha Randeniya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 18:45:03