更新时间:2024-12-12 GMT+08:00
分享

对接微信公众号获取用户信息

通过应用与微信对接,实现用户登录微信公众号并获取到用户信息。

前提条件

已在微信公众平台注册了商户的公众账号,并获取如下所示关键信息。

  • 开发者ID(AppID):微信公众号开发识别码,配合开发者密码可调用公众号的接口能力。在微信公众平台申请公众账号后,微信会自动分配对应的AppID。

    获取方法:使用注册的公众账号和密码登录微信公众平台https://mp.weixin.qq.com/,在微信公众平台“开发 > 基本配置”中,查看“AppID”取值。商户的公众账号审核通过后,邮件中也会包含该字段值。

  • 开发者密码(AppSecret):是校验微信公众号开发者身份的密码,具有极高的安全性,用于获取接口调用凭证access_token时使用。

    获取方法:使用注册的公众账号和密码登录微信公众平台https://mp.weixin.qq.com/,在微信公众平台“开发 > 基本配置”中,单击“AppSecret”后的“重置”进行获取。

创建微信公众号连接器

  1. 参考登录AstroZero新版应用设计器中操作,进入应用设计器。
  2. 在左侧导航栏中,选择“集成”
  3. 单击“连接器”中的“ 连接器实例”,进入连接器实例页面。
  4. 在左侧导航栏中,选择“登录 > 微信登录”。
  5. 在右侧页面单击“+”,设置微信对接的参数。

    表1 新建微信公众号连接器参数说明

    参数

    说明

    名称

    新建连接器的名称。命名要求如下:

    • 长度不能超过64个字符,包括前缀命名空间的长度。
      须知:

      名称前的内容为命名空间,在AstroZero中为了避免不同租户间数据的重名,租户在首次创建应用时需要先定义一个命名空间。一个租户只能创建一个命名空间,创建后不支持修改。

    • 必须以英文字母开头,只能由英文字母、数字或单下划线组成,且不能以下划线结尾。

    App ID

    微信公众号开发识别码,请与前提条件中的“AppID”取值保持一致。

    密钥

    校验公众号开发者身份的密码,请与前提条件中的“AppSecret”取值保持一致。

    作用域

    用户登录微信公众号的授权作用域类型,有如下两种。
    • snsapi_base :不会弹出授权页面,不需要用户授权,只能获取用户的openid。
    • snsapi_userinfo:会弹出授权页面,需要用户授权,可通过openid获取用户头像、昵称等信息。即使在用户未关注微信公众号的情况下,只要用户授权,也能获取其信息。

    重定向地址

    用户授权后,重定向回调的地址。

    打包当前配置

    选中该选项后,应用打包时会将当前配置的连接器信息一并打出。例如,如果应用包发布到运行环境,当前配置默认会被同步到运行环境中。如果不勾选,则内容不会打包发布到运行环境,此时需要您参考管理应用中的连接器中操作,创建对应的连接器。

    默认为选中,对信息敏感的场景,建议不勾选。

  6. 设置完成后,单击“保存”

在脚本中调用连接器

在脚本中,调用已创建的连接器,实现用户登录微信公众号。

  1. 在微信客户端的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参数对应的授权作用域权限。

  2. 参考创建空白AstroZero脚本中操作,创建一个空白脚本。
  3. 在脚本编辑器中,输入如下代码。

    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取值。

  4. 单击脚本编辑器页面上方的,保存脚本。
  5. 保存成功后,单击,执行脚本。
  6. 不用输入请求报文,直接单击测试窗口右上角的
  7. 在日志页签,查看到已获取“access_token”和“openid”,可用于登录微信公众号。

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

相关文档