Android集成Google OAuth 2.0+App Links遇redirect_uri_mismatch问题求助
解决Google OAuth 2.0 App Links方案下的redirect_uri_mismatch异常
Google Cloud Console核心配置(重点)
- 必须创建Android类型的客户端ID,不要选择Web应用类型
- 进入Android客户端ID配置页,确保以下信息完全匹配:
- 包名:严格对应应用中的
com.mypackage.app,大小写、标点均不能出错 - SHA-256证书指纹:和
assetlinks.json中填写的调试指纹完全一致(包括冒号分隔格式,无多余空格) - 无需填写「授权重定向URI」(该字段仅针对Web应用,App Links通过assetlinks验证绑定关系)
- 包名:严格对应应用中的
其他排查要点
修正assetlinks.json格式错误
你提供的assetlinks.json末尾多了一个冗余的],正确格式应为:
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.mypackage.app", "sha256_cert_fingerprints": ["FB:34:15:34:8F:6B:[...]"] } }]
同时确保:
- 文件通过HTTPS可直接访问,无301/302重定向
- 响应的Content-Type为
application/json
优化Intent Filter配置
- 确保
autoVerify="true"的Intent Filter属于处理跳转的SignUpActivity - 建议给Intent Filter添加具体路径前缀,避免URI冲突:
对应的redirect URI需改为<intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" /> <data android:host="example.com" /> <data android:pathPrefix="/oauth2/callback" /> </intent-filter>https://example.com/oauth2/callback,同步更新AppAuth请求中的配置
验证App Links绑定状态
执行以下命令查看应用的App Links验证结果:
adb shell pm get-app-links com.mypackage.app
确保输出中包含verified: true,若为false,需重新检查assetlinks.json的指纹、包名和访问权限
检查AppAuth请求一致性
- 确保redirect URI与Intent Filter定义的规则完全匹配(域名、路径、大小写都要一致)
- 确认
ResponseTypeValues.CODE已正确设置,请求的scope包含openid(Google OAuth要求openid用于身份验证流程)
测试步骤
- 清除应用缓存和数据,重新安装调试包
- 用Chrome打开
https://example.com/oauth2/callback(对应你的redirect URI),确认直接跳转至应用,无选择器弹窗 - 重新触发OAuth授权流程,检查是否仍出现redirect_uri_mismatch错误
内容的提问来源于stack exchange,提问作者Bratyslav Morhunov
相关产品推荐
相关产品推荐

