QQ分享提示设备未授权(错误码:25105)

最近QQ分享因为没有去关注QQ配置universal link的变化导致年久失修的SDK在被运用的时候突然出现了提示:设备未授权(错误码:25105)报错。
QQ管理后台校验universal link 时提示:应用的universal link 配置中不含互联信息【errcode:1001:0】。

就这问题折腾了一两个小时踩了一些坑~~~,其中包括:QQ管理后台需多次点击保存修改universal link 以及 多次点击校验universal link;还有apple-app-site-association未配置Content-Typeapplication/json导致校验不通过的问题等坑~~~

1、QQ开放平台管理后台配置

QQ分享提示设备未授权(错误码:25105)_第1张图片
QQ开放平台.png

只需要配置域名如:737.combaidu.com、...,就会自动生成https://737.com/qq_conn/101577777https://baidu.com/qq_conn/101577777
提交的时候如果提示错误多点几次就OK了。

2、配置苹果开发者后台

在苹果开发者管理后台中找到对应的APPID,点击进入编辑勾选


QQ分享提示设备未授权(错误码:25105)_第2张图片
苹果开发者后台.png

3、配置文件与服务器

配置文件

创建个空白文件,将其命名为apple-app-site-association,不需要文件后缀格式。
文件内容如下:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "9GT7E28999.com.feeyu.mjt",
                "paths": [ "*","/qq_conn/101577777/*"]
            },
            {
                "appID": "9GT7E28999.com.feeyu.hhxy",
                "paths": [ "*","/qq_conn/101566666/*"]
            }
        ]
    }
}

讲一下注意的地方:
appID:开发者团队ID与bundle id的组合
paths:配置可以跳转的路径。可以域名下的所有路径,也可以具体到某个页面。但是别忘了配置"/qq_conn/101566666/*"101566666这个是QQ开放平台的AppID。

附上:
universal link配置官方文档

文件上传服务器

将文件上传到服务器域名的根目录或者.well-known子目录下 ,上传时文件是不带任何后缀的,并且域名必须支持 HTTPS。配置完成后可以通过以下url 访问:

// 根目录
https:// {host} /apple-app-site-association
// .well-known子目录
https:// {host} /.well-known/apple-app-site-association

浏览器打开后的效果:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "9GT7E28999.com.feeyu.mjt",
                "paths": [ "*","/qq_conn/101577777/*"]
            },
            {
                "appID": "9GT7E28999.com.feeyu.hhxy",
                "paths": [ "*","/qq_conn/101566666/*"]
            }
        ]
    }
}

如果打开后的效果是直接下载文件,说明配置上少了文件头json的配置。

Content-Type:application/json

4、配置Xcode

QQ分享提示设备未授权(错误码:25105)_第3张图片
Xcode.png

另外的配置就不多说了按QQ的来即可,调用新版的QQ SDK初始化方法:

_tencentOAuth = [[TencentOAuth alloc] initWithAppId:@"101566666"
                                   andUniversalLink:@"https://xxx.com/qq_conn/101577777"
                                        andDelegate:self];

在调用分享跳转到QQ 后会出现验证中的提示,等个几分钟就可以了。

全域命中问题

如果有此问题建议参考作者的另一篇文章 配置 Associated Domains,了解 universal link 的校验方式。

也可以仔细研读 微信文档中关于全域命中的说明,如下图:

QQ分享提示设备未授权(错误码:25105)_第4张图片
微信文档截图

通过一下方式可复现全域命中问题:

  • 项目A:配置的QQ universal link 为 aaa1.com, 使用 QQ 授权返回APP的时候打开了项目C
  • 项目B:配置的微信 universal link 为 aaa1.com,使用微信授权返回APP的时候打开了项目C
  • 项目C:配置了Associated Domains,Xcode中填写的 Domains 为 aaa1.com

解决: 根据 universal link 的校验原理,针对这块做一些修改即可,如以下方式:

  • 方式一:配置子域名来实现项目隔离
  • 方式二:修改paths来区分Domains 与微信、QQ的universal link校验来实现。

注: Associated DomainsQQ、微信都是通过校验apple-app-site-association 文件来实现,但是QQ、微信Associated Domains多了个配置管理后台的universal link ,并且QQ、微信是通过管理后台配置的universal link 来校验自身,因此通过配置universal link避免全局命中。

参考文档

Support Universal Links
苹果官方提供Universal Links校验
掘金--参考文章
--参考文章

你可能感兴趣的:(QQ分享提示设备未授权(错误码:25105))