【一键登录】---- 2026超详细图文教程|APP微信一键登录完整实现流程(Android\+iOS\+后端,避坑完整版)

【一键登录】---- 2026超详细图文教程|APP微信一键登录完整实现流程(Android\+iOS\+后端,避坑完整版)

文章目录

  • 超详细图文教程|APP微信One-Click Login完整实现流程(Android\+iOS\+后端,避坑完整版)
    • 一、业务全景流程图
    • 二、前置准备:微信开放平台后台配置⚙️(配图2:后台实操截图)
      • 2.1 账号资质要求📋
      • 2.2 创建移动应用审核步骤📝
    • 三、Android端SDK集成实操🤖
      • 3\.1 导入官方微信SDK📦
      • 3.2 固定目录创建(必做,微信硬性规则📌)
      • 3.3 AndroidManifest清单配置⚙️
      • 3.4 点击登录核心业务代码💻
      • 3.5 回调页面获取code代码📩
    • 四、iOS端集成核心配置🍎
    • 五、后端全套接口逻辑🖥️(Java通用,全平台通用)
      • 5.1 接口一:code换取access\_token、openid🔄
      • 5.2 接口二:获取用户微信资料👤
      • 5.3 后端业务登录逻辑🧩
    • 六、上线高频问题图文避坑⚠️
    • 七、上线安全硬性规范🛡️
    • 补充答疑💬:Java后端调试|微信有无公用测试AppID\+Secret?
      • 1、移动应用(本文Android/iOS APP登录专用)📱
      • 2、免费替代调试方案(Java后端本地开发专用🆓)
      • 3、密钥归属规则📌

超详细图文教程|APP微信One-Click Login完整实现流程(Android+iOS+后端,避坑完整版)

前言:市面上99%APP微信登录均采用微信OAuth2.0授权码模式,禁止前端直调微信接口(高危安全漏洞),本文全程图文点位标注、分步实操、全套代码、高频坑点配图讲解,零基础开发可直接照搬上线。


一、业务全景流程图

✅ 极简一目了然流程图

1.拉起微信授权

2.用户同意授权,返回临时code

3.后端携带AppID+AppSecret+code请求微信服务器

4.下发access_token/openid用户凭证

新用户自动注册/老用户直接登录

📱APP端点击微信登录

💬微信客户端授权页

📤APP上传code至自研后端

☁️微信开放平台服务端

⚙️业务后端校验账号

🔑下发业务Token,APP登录完成

整套登录闭环5步走✨,核心原则:前端只拿code,所有密钥、接口鉴权全部交由后端处理****🔒

  1. 📱用户点击APP【微信登录】按钮,APP集成SDK拉起微信授权页

  2. ✅用户同意授权,微信客户端回调APP,返回一次性临时授权code(5分钟有效期、单次可用⏱️)

  3. 📤APP将code上传自研业务后端,不触碰微信私密接口🚫

  4. 🔐后端携带AppID、AppSecret、code,请求微信服务器,换取openid、access_token用户凭证

  5. 🗄️后端查询数据库,完成账号注册/登录,返回业务token,APP本地存储完成登录🎉

核心禁忌:绝对不能把AppSecret写在安卓/苹果客户端代码内,会直接导致用户账号被盗、平台资质违规!


二、前置准备:微信开放平台后台配置⚙️(配图2:后台实操截图)

2.1 账号资质要求📋

  • 🌐官网地址:https://open.weixin.qq.com/

  • 👤账号类型:必须企业认证账号(个人账号无法开通APP微信登录权限❌)

  • 💰费用:300元/次认证费用,认证长期有效✅

2.2 创建移动应用审核步骤📝

  1. 登录后台 → 管理中心 →移动应用📱→ 创建移动应用

2.基础资料:填写应用名称、官网、应用图标、应用简介🖼️

平台必填参数(审核必填,错填无法跳转回调⚠️)
🤖Android:APP官方包名、应用签名MD5值

🍎iOS:Bundle ID、Universal Links通用链接(iOS13强制必填)

  1. 提交审核:工作日1-3天审核通过⏳,审核完成获取两大核心参数
    🆔AppID:客户端+后端共用

  2. 🔑AppSecret:仅后端留存,禁止外泄🚫


三、Android端SDK集成实操🤖

3.1 导入官方微信SDK📦

Module层级build.gradle引入依赖(无埋点纯净版SDK)

// 微信官方登录SDK 稳定版 implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.8.0'

3.2 固定目录创建(必做,微信硬性规则📌)

在项目包名下,新建wxapi固定文件夹📂,新建回调类 WXEntryActivity,包名不能修改,否则微信无法跳转回APP❌

3.3 AndroidManifest清单配置⚙️

<!-- 微信专属回调页面 透明无标题 必须配置exported=true --><activityandroid:name=".wxapi.WXEntryActivity"android:exported="true"android:theme="@android:style/Theme.Translucent.NoTitleBar"><intent-filter><actionandroid:name="android.intent.action.VIEW"/><categoryandroid:name="android.intent.category.DEFAULT"/><categoryandroid:name="android.intent.category.BROWSABLE"/><!-- scheme格式固定:wx+你的微信开放平台AppID --><dataandroid:scheme="wxwxxxxxxxxxxxxxxx"/></intent-filter></activity>

3.4 点击登录核心业务代码💻

// 全局初始化微信SDKIWXAPIwxApi=WXAPIFactory.createWXAPI(this,"你的AppID",true);wxApi.registerApp("你的AppID");/** * 微信登录点击事件 */privatevoidgoWxLogin(){// 判断用户是否安装微信if(!wxApi.isWXAppInstalled()){Toast.makeText(this,"请先安装微信客户端",Toast.LENGTH_SHORT).show();return;}// 构建授权请求SendAuth.ReqauthReq=newSendAuth.Req();authReq.scope="snsapi_userinfo";// 授权获取昵称、头像authReq.state="login_"+System.currentTimeMillis();// 防csrf攻击随机值wxApi.sendReq(authReq);}

3.5 回调页面获取code代码📩

// WXEntryActivity内回调方法@OverridepublicvoidonResp(BaseRespbaseResp){super.onResp(baseResp);// 判断为微信登录回调if(baseResp.getType()==ConstantsAPI.COMMAND_SENDAUTH){SendAuth.Respresp=(SendAuth.Resp)baseResp;switch(resp.errCode){case0:// 授权成功,拿到核心code,传给后端StringwxCode=resp.code;// 调用自研后端登录接口,上传codehttpPostWxLogin(wxCode);break;case-2:// 用户手动取消微信授权Toast.makeText(this,"已取消登录",Toast.LENGTH_SHORT).show();finish();break;}}finish();}

四、iOS端集成核心配置🍎

  1. 🔗配置微信URL白名单:LSApplicationQueriesSchemes 添加 weixin、wechat

  2. 🌐配置Universal Links通用链接:微信后台与Xcode链接必须完全一致,iOS13+不配置无法返回APP❌

  3. 📝AppDelegate注册微信AppID,实现跳转回调代理

  4. ✅拉起授权逻辑和安卓完全一致,回调获取code后直接上传后端即可

iOS高频坑:通用链接校验失败,授权弹窗一闪而过,直接返回APP登录页,百分百是链接前后不一致导致。


五、后端全套接口逻辑🖥️(Java通用,全平台通用)

后端两步接口调用,前端无需感知微信接口,安全可控

5.1 接口一:code换取access_token、openid🔄

请求地址(GET):https://api.weixin.qq.com/sns/oauth2/access_token

请求参数:

  • 🆔appid:开放平台AppID
  • 🔒secret:后端保密AppSecret
  • 📨code:前端上传临时授权码
  • 📎grant_type:固定值 authorization_code

微信返回标准JSON:

{"access_token":"长期鉴权凭证","expires_in":7200,"refresh_token":"刷新凭证","openid":"用户当前应用唯一ID","unionid":"企业主体全域统一用户ID","scope":"snsapi_userinfo"}

5.2 接口二:获取用户微信资料👤

请求地址(GET):https://api.weixin.qq.com/sns/userinfo

入参:access_token + openid

返回:用户昵称、头像地址、性别、城市信息

5.3 后端业务登录逻辑🧩

  1. 🗄️根据openid查询业务数据库

  2. 🆕无账号:自动新建账号,绑定openid、unionid、头像昵称

  3. ✅已有账号:直接核验身份,下发业务登录Token

  4. 💾前端接收token,本地SP/钥匙串存储,完成登录


六、上线高频问题图文避坑⚠️

报错码故障原因解决方案
-2👋用户手动取消授权前端弹窗提示取消登录即可
40029⏱️Code失效/重复使用code仅单次有效,禁止前端缓存复用code
40001🔑AppSecret错误核对开放平台密钥,后端不要随意修改
无法跳转回APP🔗回调配置不匹配安卓核对签名包名、iOS核对通用链接

七、上线安全硬性规范🛡️

  • ✅🔒 AppSecret只存后端配置文件,不打包客户端、不传输前端

  • ✅🖥️ 必须后端中转微信接口,禁止前端直接换取token

  • ✅🛡️ 登录state参数必校验,防御CSRF跨站伪造登录

  • ✅👥 多端互通业务优先存储unionid,而非openid


补充答疑💬:Java后端调试|微信有无公用测试AppID+Secret?

核心结论前置:✅APP移动端微信一键登录【无官方全网公用测试AppID/Secret】❌,分为两类账号,权限完全不互通,Java后端调试区分使用!

1、移动应用(本文Android/iOS APP登录专用)📱

  • 🚫微信开放平台:无公开免费测试AppID、Secret,全网没有通用可用账号

  • 👤账号要求:必须自行注册【企业认证账号】(300元认证费),自建移动应用,审核下发专属AppID+Secret

  • ⚠️硬性限制:个人微信开放平台账号,直接禁用APP微信登录权限,无法获取可用密钥

  • 🔗关联前文报错:文档内41002(appid缺失)、41001(token缺失),90%都是复制公用无效密钥、参数漏传导致

2、免费替代调试方案(Java后端本地开发专用🆓)

  • ✅公众号测试号(免费、无需企业认证、个人微信一键申领)

  • 申领地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

  • 特点:自动生成专属AppID+Secret,免费调用token、用户信息接口,适配Java后端接口调试

  • ❌局限性:只能调试接口代码,无法拉起APP微信授权登录,仅用来校验后端http请求、参数逻辑

3、密钥归属规则📌

  • 不是全系统统一密钥:一个应用 = 一套独立AppID+Secret,互不通用

  • 禁止共用他人密钥:公用密钥大概率封禁、接口直接返回40001密钥错误,无法上线

  • Java开发建议:本地接口调试用公众号测试号,联调打包必须用自研企业移动应用密钥