开发日记 —— 记录对接苹果微信登录的坑
目录
在对接iOS微信登录时,踩了不少坑,查了很多网上的资料但是对Universal Links和Associated Domains的配置都比较模糊,本文详细介绍怎么配置这些参数。
配置开放平台 #
如果你的应用需要使接入微信生态相关功能,如微信登录、微信支付、微信分享等,那就需要先在微信开放平台注册账号。
完成做开发者资质认证,认证通过后,就可以进行应用接入。需要注意认证的费用为300元,提交后会有微信交托的三方认证公司给你来电确认信息,所以看到陌生电话不要直接拒接。
完成上述认证后进入正题开始接入微信登录。在开放平台管理中心创建移动应用
(开发者资质可以创建50个),填写应用名称、包名等基本信息。点击下一步
这里需要注意Universal Links的填写。
Universal Links 是苹果在 WWDC 上提出的 iOS9 的新特性之一。此特性类似于深层链接,并能够方便地通过打开一个 Https 链接来直接启动您的客户端应用(手机有安装 App)。对比起以往所使用的 URL Scheme,这种新特性在实现 web-app 的无缝链接时能够提供极佳的用户体验。
简单说这个链接就是用来打开你应用的入口,在微信中点击这个链接,就会直接跳转到你的应用。 配置成功后可以尝试在手机Safari浏览器直接访问该地址会显示打开按钮。
配置Xcode #
此外我们还需要在Xcode中配置Associated Domains。
点击Sigining & Capabilities
-> Associated Domains
-> +
接着在下方Domais中填写applinks:xxx.com
,其中xxx.com是你的域名。
这里的域名需要和Universal Links中的域名一致,例如:
开放平台设置
Universal Links: https://xxx.com/st/universal_link/wechat/
Xcode
Domais: applinks:xxx.com
配置文件下载地址
https://xxx.com/.well-known/apple-app-site-association
.well-known 目录是一个由互联网工程任务组(IETF)在RFC 5785中定义的特殊目录,用于存放网站的一些特定的元数据或者配置文件。这个目录通常放在网站的根目录下,使得这些配置文件可以通过一个标准和一致的方式被访问。
APP会在第一次启动的时候通过填写的域名来下载apple-app-site-association文件。 所以我们还需要在服务器对应地址下放一个apple-app-site-association的json文件,内容如下:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "${your team id}.${your app bundle id}",
"paths": [
"/universal_link/wechat/*" //开放平台中的Universal Links Uri对应
]
}
]
}
}
客户端 #
这里只简单介绍下客户端集成不是本文重点。插件可以使用fluwx 或 wechat_kit。以fluwx为例:
await fluwx
.authBy(
which: NormalAuth(
scope: 'snsapi_userinfo',
state: 'wechat_sdk_demo_test',
))
.then((value) async {});
fluwx.addSubscriber((response) async {
if (response is WeChatAuthResponse) {
await getWeChatAccessToken(response.code);
await getUserData();
Get.back();
}
});
插件主要是完成APP->微信->APP的跳转工作,通过回调拿到code。但不是最终我们需要的openid。接着再通过接口获取openid和access_token。
详细可参考文档:
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
- access_token:通过code换取access_token和openid
- userinfo:获取微信用户基本信息
这里需要注意,如果你在开放平台配置的Universal Links的不能返回200。或者Univeral Links的域名和apple-app-site-association文件中的域名不一致,都可能导致无法跳转。我们需要让APP重新下载配置文件,可以尝试删除APP并重启手机。
总结 #
总的来说,对接微信登录并不复杂,主要麻烦在于开放平台的资质认证和应用认证都分别需要审核时间。另外网上有关Univeral Links的配置资料不少,但都不详细,导致笔记最后还是一步步踩坑才调通。