如何在 Android 应用中集成微信登录
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情
在应用里集成第三方登录是比较常见的需求,尤其是微信登录,但是由于微信官方文档许久没有维护,直接上手还是会走一些弯路,本文将介绍当前移动端集成微信登录的方法。
1. 注册应用
来到微信开放平台后,进入管理中心:
首先选择 应用类目,创建自己应用对应的类目。
选择 创建移动应用,按照要求填写全部必填项
在开发信息中如实填写自己的应用相关信息,一个应用最多可以关联一个 Android 应用、一个 iPhone应用、一个iPad应用
这里需要注意安卓应用需要填写 应用签名,微信官方的指示是安装一个签名生成工具然后获取。
其实没有必要那么麻烦,直接从 AndroidStudio 的右侧边栏选择 Gradle - 你的项目 -Tasks - android - signingReport ,然后双击执行即可。
只需要稍等片刻就可以在输出结果中看到如下的内容:
找到我们使用的签名文件,其中的 MD5 指纹,就是我们需要的签名,主要注意移除其中的冒号
:
,然后将该字符串转成小写。这一步可以在 AS 中新建一个文件,先替换,然后选中按ctrl + shift + u
快捷键切换大小写即可。
完成这 3 步,工作日一般等待两三个小时就会出审核结果,审核通过后应用就有微信登陆权限了。
2. 集成SDK
我不得不吐槽,微信的文档真的很差劲。2022年了,资源中心页面挂的 maven 仓库地址还是 Jcenter,可以说是一点都没注意维护文档。
微信 sdk 现在其实已经迁移到了 MavenCentral,最新版本地址:https://search.maven.org/artifact/com.tencent.mm.opensdk/wechat-sdk-android-without-mta/6.7.9/aar
在项目中添加依赖:
1 | implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.7.9' |
2.1 注册 App
在我们的 Application 文件中写下如下代码:
1 | public IWXAPI wxapi; |
2.2 创建回调页面:WXEntryActivity
微信SDK 在授权之后会访问一个固定的页面:{applicationId}/wxpai/WXEntryActivity
,这里一定要注意,是在 applicationId
这个包名路径下创建 wxapi
目录,然后再创建 WXEntryActivity
这个页面!
一般的大家的项目根包名可能也就是你的 applicationId
,但是有点项目可能不是,这是一个踩坑点需要注意!!!!
页面内容大致如下:
1 | class WXEntryActivity : AppCompatActivity(), IWXAPIEventHandler { |
因为微信sdk的设定,我们只能在这个特定的页面拿到微信的授权码,但是我们的其他业务还是在原来的登录页面,所以这里我使用了 EventBus 来进行跨页面通信,传递微信的授权码。
2.3 拉起微信,进行授权
在我们登录页面的微信登陆按钮的监听事件中这样写:
1 | SendAuth.Req req = new SendAuth.Req(); |
在登录页面中注册 EventBus 的事件响应函数
1 | /** |
至此我们的微信登录功能就集成完毕了,剩余的就是把获取到的授权码 code,传递给咱们自己应用的后台,由他们处理其他的逻辑即可。