Unity Webview集成Plaid Link:oauth_state_id参数无效报错排查
Plaid OAuth Webview重定向报错排查:oauth_state_id无效
问题背景
- 前端基于Unity Webview开发,严格按照Plaid OAuth Webview文档配置流程
- 自定义重定向URI由AWS Lambda实现,核心逻辑:
- 从请求Cookie中读取
link_token - 从GET查询字符串中读取
oauth_state_id - 返回302状态码,通过
Location响应头重定向回Plaid指定地址
- 从请求Cookie中读取
- 重定向逻辑能正常触发,但始终收到报错:
Error: oauth uri does not contain a valid oauth_state_id query parameter. Request ID: juLxa2qy7ZKzZ49 - Lambda未对
oauth_state_id做任何修改,重定向URI示例:https://cdn.plaid.com/link/v2/stable/link.html?isWebview=true&token=link-sandbox-02b9e581-c2e1-49d8-b0c0-6ac708535fd1&receivedRedirectUri=https%3A%2F%2Ftdfdfwpj.execute-api.us-west-1.amazonaws.com%2Fdev%2Fplaid-redirect-uri?oauth_state_id=f3d1fe8b-e444-42bb-855a-da5e89a4b796
排查方向及解决方法
1. 嵌套URL编码不完整
看示例里的receivedRedirectUri参数,其中嵌套的Lambda地址里的?没有被URL编码(正确编码应为%3F)。这会导致Plaid解析时,把oauth_state_id当成外层URL的参数,而非嵌套重定向URI的参数,自然无法识别为有效参数。
解决: 生成重定向的Location头时,把包含oauth_state_id的完整Lambda地址做全URL编码,再作为receivedRedirectUri的值传入。
2. Lambda返回的Location头格式错误
检查Lambda输出的302响应:
- 确认
receivedRedirectUri的值是完全编码后的完整Lambda地址(必须包含oauth_state_id参数) - 确保
isWebview=true、token(即link_token)等必要参数没有遗漏或错误
3. Unity Webview的Cookie传递异常
确认Unity Webview在跳转到Lambda时,正确携带了包含link_token的Cookie。如果Cookie丢失,Lambda构造的重定向地址可能不符合Plaid要求,引发验证失败。建议在Lambda中加日志,打印收到的Cookie和查询参数,确认oauth_state_id确实被正确接收。
4. 参数读取拼写错误
检查Lambda代码中读取查询参数的逻辑,确保参数名严格是oauth_state_id,不要出现大小写错误(比如写成oauth_stateId)或拼写偏差。
调试技巧
- 在Lambda中添加详细日志,记录收到的所有查询参数、Cookie内容,以及最终生成的
Location头值,对比是否和预期一致。 - 手动构造完全编码后的重定向URL,在普通浏览器中测试流程,排除Unity Webview的特殊环境影响。
内容的提问来源于stack exchange,提问作者SilverSpear1031
相关产品推荐
相关产品推荐

