微信开放文档 / 开放平台
发布时间:2026-10-28 | 浏览:1
最后一次编辑于 2026-06-25
本文介绍如何在移动应用中使用微信扫码登录能力,支持 iOS、Android、鸿蒙三端。
扫码登录能力,指的是开发者可在移动应用内使用此能力,拉取二维码,用户使用微信客户端扫描二维码后可以登录此移动应用。此能力可被应用在多设备登录、智能硬件、电视盒子等场景。
iOS 扫码授权获得 Code 流程
步骤二:监听二维码回调,回调的时候显示二维码
步骤三:用户确认登录之后回调 authCode
首先 App 通过 IDiffDevOAuth.auth() 接口发起授权,然后在 OAuthListener.onAuthGotQrcode() 回调接口中获取二维码,在 App 中展示二维码,最后用户通过微信扫码授权。
首先 App 通过 IDiffDevOAuth.startOAuth() 接口发起授权,然后在 OAuthCallback.onGotQRCode() 回调接口中获取二维码,在 App 中展示二维码,最后用户通过微信扫码授权。
生成签名之前必须先获取对应的 sdk_ticket。
sdk_ticket 是用于生成签名的临时票据。正常情况下,sdk_ticket 的有效期为 7200 秒,通过 access_token 来获取。由于获取 sdk_ticket 的 API 调用次数非常有限,频繁刷新 sdk_ticket 会导致 API 调用受限,影响自身业务,开发者需在自己的服务存储与更新 sdk_ticket。
参考以下文档,使用 App 的 AppID 和 AppSecret 获取 access_token
用第一步拿到的 access_token,采用 HTTP GET 方式请求获得 sdk_ticket:
获得 sdk_ticket 之后,就可以生成扫码登录的签名了。
参与签名的字段包括第三方 appid、noncestr(随机字符串)、有效的 sdk_ticket、timestamp(时间戳)。
对所有待签名参数按照字段名(即 key)的 ASCII 码从小到大排序(字典序)后,使用 URL 键值对的格式(即 key1=value1&key2=value2…)拼接成字符串 string1。 这里需要注意的是所有参数名均为小写字符 。对 string1 作 sha1 加密,字段名和字段值都采用原始值,不进行 URL 转义。即 signature = sha1(string1)。
appid = wxappid
sdk_ticket = -p3A5zVP95IuafPhzA6lRR95_F9nZEBfJ_n4E9t8ZFWKJTDPOwccVQhHCwDBmvLkayF_jh-m9HOExhumOziDWA
noncestr = noncestr
timestamp = 1417508194
对所有待签名参数按照字段名(即 key)的 ASCII 码从小到大排序(字典序):appid、noncestr、sdk_ticket、timestamp
对所有待签名参数按照字段名(即 key)的 ASCII 码从小到大排序(字典序):appid、noncestr、sdk_ticket、timestamp
使用 URL 键值对的格式拼接成字符串 string1:
使用 URL 键值对的格式拼接成字符串 string1:
对 string1 进行 sha1 签名,得到 signature:
iOS 扫码授权获得 Code 流程
SDK 扫码登录签名算法 获取 Ticket 签名生成