接入Facebook登录SDK时app-ads.txt验证不通过如何解决
React Native应用Facebook app-ads.txt校验失败解决方案
问题描述
- 已上架Google Play Store的React Native应用集成AdMob,服务器部署的
app-ads.txt已通过Google官方验证,所有功能运行正常 - 待发布的新版本新增Facebook登录功能,已在Facebook开发者后台创建对应应用,但后台通用设置板块要求在
app-ads.txt中添加指定配置行完成应用所有权确认,未通过该步骤则无法将Facebook应用切换为live上线模式 - 应用本身未投放Facebook广告,先后测试4种配置组合提交校验,Facebook均提示错误、验证失败,测试的配置内容如下:
facebook.com,MY_FB_ADVERTISING_PERSONAL_ACCOUNT_ID,DIRECT,c3e20eee3f780d68 facebook.com,MY_FB_ADVERTISING_BUSINESS_ACCOUNT_ID,RESELLER,c3e20eee3f780d68 facebook.com,MY_APP_FB_ID,RESELLER,c3e20eee3f780d68 facebook.com,MY_APP_FB_ID,DIRECT,c3e20eee3f780d68
- 已完成基础排查:将服务器上的
app-ads.txt重命名后,Facebook提示未找到有效文件,可排除URL配置错误、Play Store登记的开发者网站地址有误的问题 - 待确认问题:一是
app-ads.txt的正确配置写法,二是当前集成Facebook登录的新版本尚未上架Play Store、商店仅存首个正式版本的情况,是否会影响验证结果
具体解答
未上架新版本确实会直接阻断验证
Facebook的app-ads.txt校验逻辑,是先抓取Google Play当前全量公开的正式上架版本的包信息,匹配包内集成的Facebook SDK关联的应用ID,再拉取开发者站点下的app-ads.txt做内容匹配。你当前线上的正式版本没有集成Facebook SDK、也没有写入对应Facebook应用ID的关联配置,Facebook爬虫抓不到对应关联关系,哪怕文件内容写对了也会返回校验错误。
等你把集成Facebook登录、在AndroidManifest里配置好对应Facebook app ID的新版本正式上架,等Play Store的版本信息完成全球同步(通常需要24-72小时),再提交校验这部分的阻断就会消失。
你之前测试的配置写法全部错误
Facebook所有权校验要求的配置行,第二个字段既不是个人广告账户ID、企业广告账户ID,也不是Facebook应用ID,必须填写该Facebook应用绑定的商务管理平台(BM)的数字ID,正确的固定格式为:
facebook.com,你的商务管理平台ID,DIRECT,c3e20eee3f780d68
配置时需要注意几个细节:
- 关系类型必须填
DIRECT,不要用RESELLER,后者是广告经销商的标识,不适用于应用所有权验证场景 - 确认
app-ads.txt文件为UTF-8无BOM编码,文件内不要有多余的全角符号、异常空行、注释内容混在Facebook配置行附近 - 文件必须公开可访问,返回HTTP 200状态码,不要设置登录鉴权、不要做跨域重定向
- 原有AdMob的有效配置不需要删除,直接把Facebook的配置行追加到文件末尾即可
- 如果站点用了CDN加速,修改完文件后必须主动刷新CDN缓存,Facebook爬虫的缓存更新周期为24小时,修改后至少等待半天再提交校验,不要反复点击触发校验
规则说明
即便你完全不投放Facebook广告,只要使用了Facebook登录、分享等面向开发者的平台服务,现在平台统一要求通过app-ads.txt完成应用所有权校验,属于强制规则,没有绕过路径。
内容的提问来源于stack exchange,提问作者ED Bowman
相关产品推荐
相关产品推荐

