android - deeplinkassetlinks 验证一台服务器,但不验证其他 Android 应用程序
问题描述
我有一个 Android 应用程序,它可以基于调试/发布版本与登台服务器和生产服务器通信。这些构建可以通过 3 个不同的密钥(自定义调试、上传密钥或播放商店签名密钥)中的任何一个进行签名。
为了处理这种情况,我添加了以下文件以/.well-known/assetlinks.json
从两台服务器(登台和生产)提供服务。我尝试使用带有 content-type = application/json 的 chrome 和 postman 来拉它。
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "<package_id>",
"sha256_cert_fingerprints":
["<hashOfKey1>"]
}
},
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "<package_id>",
"sha256_cert_fingerprints":
["<hashOfKey2>"]
}
},
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "<package_id>",
"sha256_cert_fingerprints":
["<hashOfKey3>"]
}
}
]
此外,intent-filter 的数据中的主机是使用 manifestPlaceholders 指定的(这似乎工作正常),如下所示:
<data
android:host="${hostName}"
android:path="/dashboard/profile/private"
android:scheme="https"
/>
问题 当我构建调试(与登台服务器对话)应用程序时,应用程序可以很好地处理登台网址。但是当我构建发布应用程序时(我尝试通过签署自定义调试密钥和上传密钥),应用程序不处理生产 URL。
我无法弄清楚它不适用于生产链接。
解决方案
在寻找找到确切问题的方法后,我找到了标准工具。 https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https:// <domain_as_per_manifest>&relation=delegate_permission/common.handle_all_urls
问题是我指定example.com
了内部assetlinks.json 请求并由www.example.com
(我不知道)重定向和服务。当我使用上述工具时,它向我显示不允许重定向。
推荐阅读
- sql - 如何修复 SQL Server Json 文本格式不正确。在位置 151 发现意外字符
- reactjs - Ant.design 没有检测到 Form.Item React 中的自定义输入组件
- python - 尝试登录 Instagram
- amazon-web-services - 无服务器框架 AWS StepFunction 不起作用
- python - 简单的误解,神经切线入门
- python - 部署在两个 VM 上的两个 Pod 相互通信的问题
- java - Spring Cloud Stream - 将 Serdes 提供给个人消费者/生产者
- css - SvgIcon 继承 viewBox
- c# - 使用统一容器获取 BusHealth 的实例
- julia - 在 Julia 中重复一个函数 N 次(组合)