对接微信公众号获取用户信息
通过应用与微信对接,实现用户登录微信公众号并获取到用户信息。
前提条件
已在微信公众平台注册了商户的公众账号,并获取如下所示关键信息。
- 开发者ID(AppID):微信公众号开发识别码,配合开发者密码可调用公众号的接口能力。在微信公众平台申请公众账号后,微信会自动分配对应的AppID。
获取方法:使用注册的公众账号和密码登录微信公众平台https://mp.weixin.qq.com/,在微信公众平台“开发 > 基本配置”中,查看“AppID”取值。商户的公众账号审核通过后,邮件中也会包含该字段值。
- 开发者密码(AppSecret):是校验微信公众号开发者身份的密码,具有极高的安全性,用于获取接口调用凭证access_token时使用。
获取方法:使用注册的公众账号和密码登录微信公众平台https://mp.weixin.qq.com/,在微信公众平台“开发 > 基本配置”中,单击“AppSecret”后的“重置”进行获取。
创建微信公众号连接器
- 参考登录AstroZero新版应用设计器中操作,进入应用设计器。
- 在左侧导航栏中,选择“集成”。
- 单击“连接器”中的“ 连接器实例”,进入连接器实例页面。
- 在左侧导航栏中,选择“登录 > 微信登录”。
- 在右侧页面单击“+”,设置微信对接的参数。
表1 新建微信公众号连接器参数说明 参数
说明
名称
新建连接器的名称。命名要求如下:
- 长度不能超过64个字符,包括前缀命名空间的长度。
说明:
名称前的内容为命名空间,在AstroZero中为了避免不同租户间数据的重名,租户在首次创建应用时需要先定义一个命名空间。一个租户只能创建一个命名空间,创建后不支持修改。
- 必须以英文字母开头,只能由英文字母、数字或单下划线组成,且不能以下划线结尾。
App ID
微信公众号开发识别码,请与前提条件中的“AppID”取值保持一致。
密钥
校验公众号开发者身份的密码,请与前提条件中的“AppSecret”取值保持一致。
作用域
用户登录微信公众号的授权作用域类型,有如下两种。- snsapi_base :不会弹出授权页面,不需要用户授权,只能获取用户的openid。
- snsapi_userinfo:会弹出授权页面,需要用户授权,可通过openid获取用户头像、昵称等信息。即使在用户未关注微信公众号的情况下,只要用户授权,也能获取其信息。
重定向地址
用户授权后,重定向回调的地址。
打包当前配置
选中该选项后,应用打包时会将当前配置的连接器信息一并打出。例如,如果应用包发布到运行环境,当前配置默认会被同步到运行环境中。如果不勾选,则内容不会打包发布到运行环境,此时需要您参考管理应用中的连接器中操作,创建对应的连接器。
默认为选中,对信息敏感的场景,建议不勾选。
- 长度不能超过64个字符,包括前缀命名空间的长度。
- 设置完成后,单击“保存”。
在脚本中调用连接器
在脚本中,调用已创建的连接器,实现用户登录微信公众号。
- 在微信客户端的H5页面,发起AJAX请求,用于获取code。
请求示例如下:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。
- 参考创建空白AstroZero脚本中操作,创建一个空白脚本。
- 在脚本编辑器中,输入如下代码。
import * as wechat from 'wechat'; let connectorID = "whchat" let code = "xxxxx" let client = wechat.NewClient(connectorID) let res = client.GetAccessToken(code) console.log(res)
其中,“connectorID”为连接器的名称,“code”为1获取的code取值。
- 单击脚本编辑器页面上方的,保存脚本。
- 保存成功后,单击,执行脚本。
- 不用输入请求报文,直接单击测试窗口右上角的。
- 在日志页签,查看到已获取“access_token”和“openid”,可用于登录微信公众号。
{ "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE" }