HarmonyOS应用集成三方SDK微信账号登录1-148254236

一、前期准备


  1. 注册微信开放平台账号


    • 微信开放平台注册开发者账号,创建移动应用并提交审核,获取AppIDAppSecret[citation:1]。

    • 注意:应用包名需与鸿蒙项目的config.json中配置的bundleName完全一致[citation:2]。

  2. 配置应用签名


    • 使用鸿蒙提供的签名工具生成应用签名(如.cer文件),并在微信开放平台填写对应的签名信息(如SHA256或MD5)。签名不匹配会导致登录失败[citation:1][citation:3]。



二、集成微信SDK


1.添加依赖


在项目的oh-package.json5文件中添加三方SDK依赖


 "dependencies": {
"@tencent/wechat_open_sdk": "1.0.0"
}

2. 鸿蒙接入指南


正确接入 SDK 后并拥有相关授权域(scope)权限后,开发者移动应用会在终端本地拉起微信应用进行授权登录,微信用户确认后微信将拉起开发者移动应用,并带上授权临时票据(code)。


{
let req = new wxopensdk.SendAuthReq;
req.scope = "snsapi_userinfo"; // 只能填 snsapi_userinfo
req.state = "wechat_sdk_demo_test";
this.wxApi.sendReq(getContext(this) as common.UIAbilityContext, req)
}

参数说明


参数是否必须说明
appid应用唯一标识,在微信开放平台提交应用审核通过后获得
scope应用授权作用域,获取用户个人信息则填写 snsapi_userinfo (只能填 snsapi_userinfo)
state用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止 csrf 攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加 session 进行校验。在state传递的过程中会将该参数作为url的一部分进行处理,因此建议对该参数进行url encode操作,防止其中含有影响url解析的特殊字符(如'#'、'&'等)导致该参数无法正确回传。

返回示例:


appid: wxd477edab60670232
scope: snsapi_userinfo
state: wechat_sdk_demo

3.通过 code 获取 access_token


获取第一步的 code 后,请求以下链接获取 access_token:


https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_t

返回说明


正确的返回:


{
"access_token": "ACCESS_TOKEN",
"expires_in": 7200,
"refresh_token": "REFRESH_TOKEN",
"openid": "OPENID",
"scope": "snsapi_userinfo",
"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}

4.刷新 access_token 有效期


access_token 是调用授权关系接口的调用凭证,由于 access_token 有效期(目前为 2 个小时)较短,当 access_token 超时后,可以使用 refresh_token 进行刷新,access_token 刷新结果有两种:


1. 若access_token已超时,那么进行refresh_token会获取一个新的access_token,新的超时时间;
2. 若access_token未超时,那么进行refresh_token不会改变access_token,但超时时间会刷新,相当于续期access_token。

refresh_token 拥有较长的有效期(30 天),当 refresh_token 失效的后,需要用户重新授权


请求方法


获取第一步的 code 后,请求以下链接进行 refresh_token:


https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN

正确的返回:


{
"access_token": "ACCESS_TOKEN",
"expires_in": 7200,
"refresh_token": "REFRESH_TOKEN",
"openid": "OPENID",
"scope": "SCOPE"
}

5.获取用户信息


获取access_token后,进行接口调用,有以下前提:


  1. access_token有效且未超时;
  2. 微信用户已授权给第三方应用账号相应接口作用域(scope)。

获取access_token后,进行接口调用,有以下前提:


  1. access_token有效且未超时;
  2. 微信用户已授权给第三方应用账号相应接口作用域(scope)。

对于接口作用域(scope 为 snsapi_userinfo),可参考如下接口获取用户个人信息:


接口接口说明
/sns/oauth2/access_token通过code换取access_token、refresh_token和已授权scope
/sns/oauth2/refresh_token刷新或续期access_token使用
/sns/auth检查access_token有效性
/sns/userinfo获取用户个人信息

posted @ 2025-06-28 15:46  同步—TLNX  阅读(96)  评论(0)    收藏  举报