微信小程序获取是否关注关联公众号的状态

网上搜索到的文章大多在讲unionId、openId之类的关联,这里很简单就是一个需求:获得用户是否关注关联公众号的状态,这里简单说一下具体怎么做。
(注意这里的公众号必须是服务号,如果是订阅号的话就只能通过在公众号中与用户互动,比如点击菜单,回复等获取openid,然后再获取到状态)

总体思路就是利用web-view跳转到公众号授权域名下,在该web-view下获取到用户在关联公众号下的openId,再通过openId查询到用户信息,最后通过web-view的jssdk跳转回小程序,带上是否关注公众号的标识即可。

  1. 设置
    首先要设置两个东西,公众号的授权域名和小程序开发下的业务域名,公众号授权域名即授权该域名可获得用户信息回传,小程序开发下的业务域名需要设置与公众号授权域名同样的域名。
    公众号授权域名设置:https://www.jianshu.com/p/162fa4b83ea5
    小程序开发业务域名设置:https://www.php.cn/xiaochengxu-446622.html

  2. 小程序web-view跳转公众号授权页
    跳转url:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
    这里是各个参数的具体含义:

    url参数.PNG

    注意跳到web-view之后实际就与小程序开发无关了,这里就是在进行公众号的开发,具体可以参考一下公众号开发的官方文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
    跳转到授权页需要用户同意授权,同意后页面跳转到 redirect_uri/?code=CODE&state=STATE,这里拿到了code。

  3. 通过code获取access_token,请求返回用户在公众号上的openid
    拿到code后,请求url: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
    这里的appid和serect都是属于公众号的。
    随后返回json数据:

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

这样就拿到了当前用户在公众号上的openid

  1. 使用openid获取用户信息
    请求url: https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
    注意这里的access_token是上一步中获取到的access_token,而不是基础支持的access_token。
    这一步中返回的json数据中就包含了用户是否关注公众号的信息。

  2. 利用jssdk跳转回小程序(带是否关注公众号参数)

wx.miniProgram.switchTab({url: `/pages/index/index?isSubscribe=${isSubscribe}`})

你可能感兴趣的:(微信小程序获取是否关注关联公众号的状态)