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

使用Firebase动态/深度链接时重定向URL丢失查询参数

Firebase动态链接保留Patreon OAuth参数配置及替代方案

一、配置Firebase动态链接保留查询参数

1. 控制台端配置

  • 登录Firebase控制台,进入Dynamic Links模块
  • 找到目标动态链接(https://myappname.page.link/patreon)并点击编辑
  • 在「深度链接行为」区域,开启传递所有请求参数到深度链接;若需精准控制,可设置自定义参数规则,确保code参数被包含在内
  • 确认动态链接的「链接前缀」配置未限制参数传递

2. 应用端代码校验

使用firebase_dynamic_links包接收链接时,需完整解析URL的查询参数:

import 'package:firebase_dynamic_links/firebase_dynamic_links.dart';

// 处理应用启动时的初始链接
Future<void> handleInitialDynamicLink() async {
  final PendingDynamicLinkData? data = await FirebaseDynamicLinks.instance.getInitialLink();
  final Uri? deepLink = data?.link;
  if (deepLink != null) {
    final String? code = deepLink.queryParameters['code'];
    if (code != null) {
      // 处理Patreon返回的授权code
    }
  }
}

// 监听应用后台运行时唤起的链接
void listenToDynamicLinks() {
  FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
    final Uri deepLink = dynamicLinkData.link;
    final String? code = deepLink.queryParameters['code'];
    if (code != null) {
      // 处理授权code
    }
  });
}

注意不要仅提取链接的path部分,需通过Uri对象的queryParameters完整获取参数。

二、无需Dynamic Links的替代方案

1. 使用App Links(Android)+ Universal Links(iOS)

这是官方推荐的原生深度链接方案,直接绑定域名,无需中间转发,参数传递更可靠:

  • Android配置:在AndroidManifest.xml中添加对应域名的intent-filter,并在域名的.well-known目录放置assetlinks.json完成所有权验证
  • iOS配置:在Info.plist中添加associated domains,并在域名的.well-known目录放置apple-app-site-association文件
  • Flutter端接收链接:使用uni_links包监听链接:
import 'package:uni_links/uni_links.dart';

// 处理应用启动时的初始链接
Future<void> handleInitialLink() async {
  final Uri? initialUri = await getInitialUri();
  if (initialUri != null) {
    final String? code = initialUri.queryParameters['code'];
    // 处理授权code
  }
}

// 监听实时链接跳转
void listenToLinks() {
  uriLinkStream.listen((Uri? uri) {
    if (uri != null) {
      final String? code = uri.queryParameters['code'];
      // 处理授权code
    }
  }, onError: (error) {
    // 错误处理逻辑
  });
}

2. 自定义URL Scheme(不推荐)

可使用myapp://patreon?code=xxx这类Scheme直接唤起应用,但安全性较低(其他应用可注册同名Scheme),仅适用于兼容性要求极高的场景,同样可通过uni_links包监听链接。

内容的提问来源于stack exchange,提问作者Puffing Devil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:21:16