精华内容
下载资源
问答
  • c#获取微信公众号openid,并根据公众号openid获取微信用户名用户信息与头像等,简单易懂。
  • PHP如何获得Openid,微信公众号通过appid和appsecret获取Openid,该类实现了从微信公众平台获取code、通过code获取openid和access_token、
  • 在微信公众号中,获取关注用户的OPENID。代码是用C#来进行开发的。
  • 1、H5页面是运行在微信浏览器的 2、需要与公众号关联(即需要openid) 3、判断需求是否需要弹窗告知用户授权...// 强制关注公众号获取openid getCode = function () { if (sessionStorage.getItem("openid")&&ses
  • 微信公众号开发获取openid和微信分享和公众号配置验证,网页授权后台代码,获取openid,微信分享,公众号配置验证,代码齐全
  • } throw new WechatRequestException("获取标签用户列表失败:" + result); } private String getTagUsersCompleteUrl() { return UriComponentsBuilder.fromHttpUrl(GET_TAG_USERS_URL) .queryParam("access_token...
    
    import com.google.common.collect.Maps;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.web.client.RestTemplate;
    import org.springframework.web.util.UriComponentsBuilder;
    
    import java.util.Collections;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    
    @Service
    @Slf4j
    public class WechatUserService {
    
        private final static String GET_TAG_USERS_URL = "https://api.weixin.qq.com/cgi-bin/user/tag/get";
        private final static String GET_ALL_USER_OPENID_URL = "https://api.weixin.qq.com/cgi-bin/user/get";
        private static final String GET_ACCESS_TOKEN_URL ="https://api.weixin.qq.com/sns/oauth2/access_token";
        @Autowired
        private OfficialAccountsManager officialAccountsManager;
        @Autowired
        private AccessTokenManagerCenter accessTokenManagerCenter;
    
    
        @Autowired
        private RestTemplate restTemplate;
    
    
        public List<String> getOpenIdsByTag(String tagId, String nextOpenId) {
            Map<String, Object> body = new HashMap<>();
            body.put("tagid", tagId);
            body.put("next_openid", nextOpenId);
            String result = restTemplate.postForObject(getTagUsersCompleteUrl(), body, String.class);
            if (result != null && result.contains("count")) {
                JSONObject data = JSON.parseObject(result).getJSONObject("data");
                return data.getJSONArray("openid").toJavaList(String.class);
            }
            throw new WechatRequestException("获取标签用户列表失败:" + result);
        }
    
    
        private String getTagUsersCompleteUrl() {
            return UriComponentsBuilder.fromHttpUrl(GET_TAG_USERS_URL)
                    .queryParam("access_token", accessTokenManagerCenter.getAccessToken())
                    .build().toUri().toString();
        }
    
        private String getAllUserCompleteUrl() {
            return UriComponentsBuilder.fromHttpUrl(GET_ALL_USER_OPENID_URL)
                    .queryParam("access_token", accessTokenManagerCenter.getAccessToken())
                    .build().toUri().toString();
        }
    
    
        private String accessTokenUrl(String code) {
            return UriComponentsBuilder.fromHttpUrl(GET_ACCESS_TOKEN_URL)
                    .queryParam("appid", officialAccountsManager.getAppId())
                    .queryParam("secret", officialAccountsManager.getAppSecret())
                    .queryParam("code", code)
                    .queryParam("grant_type", "authorization_code")
                    .build().toUri().toString();
        }
    
         public String getAccessTokenByCode(String code) {
             String url = accessTokenUrl(code);
             return restTemplate.getForObject(url, String.class);
         }
    
        public List<String> getAllOpenId(String next_openid) {
            //return getOpenIdsByTag("100","");
            Map<String, Object> requestParams = Maps.newHashMap();
            requestParams.put("next_openid", next_openid);
            String result = restTemplate.postForObject(getAllUserCompleteUrl(), requestParams, String.class);
            if (result != null && result.contains("count")) {
                JSONObject data = JSON.parseObject(result).getJSONObject("data");
                return data.getJSONArray("openid").toJavaList(String.class);
            }
            return Collections.emptyList();
        }
    }
    

     

    展开全文
  • 微信公众号关联了小程序,配置了小程序的入口菜单,有什么办法能够在用户点击进入小程序的过程中获取公众号openid
  • 微信小程序下获取公众号openId

    千次阅读 2020-11-05 16:28:50
    微信小程序下获取公众号openId 一、为什么我们需要在小程序下面获取公众号的openId呢? 微信公众号和微信小程序我们一般都会开发,有一种场景我们经常会遇到,公众号的消息推送以较成熟,我们希望把小程序那边的用户...

    微信小程序下获取公众号openId

    一、为什么我们需要在小程序下面获取公众号的openId呢?
    微信公众号和微信小程序我们一般都会开发,有一种场景我们经常会遇到,公众号的消息推送以较成熟,我们希望把小程序那边的用户也同步到公众号这边,而且最好采用静默方式,所以我们有这种需求。

    二、方案

    从目前来讲,微信没有给我们提供可直接在小程序中调用公众号的接口,当然大家会想到union机制,当然这个还是有一定限制的,需要用户主动触发。那么我们有没有其他可选方案呢,当然我们会想到是不是可以通过向程序访问公众号h5的页面呢,这个时候我们会想到webview组件。
    在这里插入图片描述

    通过webview加载 公众号的一个h5页面,h5页面只做公众号授权处理,例如

    小程序

    constructor(props) {
        super(props)
        this.state = {
          num: 0
        }
      }
      handleLoad (e) {
        let { num } = this.state;
        this.setState({num: ++num}, ()=>{
          if(num==2){
            const url = e.detail.src;
            let code = getQueryString(url, 'code')
            Taro.redirectTo({
                url: `/pages/index/index?code=${code}`
            })
          }
        })      
      }
    
      handleError () {
        Taro.redirectTo({
            url: `/pages/index/index`
        })
      }
      
      render () {
        return (
          <WebView src='https://xxxx.xxxx.com/#/pages/get-openId/index' onLoad={ this.handleLoad } onError={ this.handleError } />
        )
      }
    

    公众号

     constructor(props) {
        super(props);
        this.state = {
        };
      }
      componentDidMount() {
        Taro.showLoading({ title: '加载中...', mask: true })
        let APP_ID = '000000000000'
        let urlParams = getAuthUrl(window.location.href, APP_ID)
        let code = ''
        if(urlParams){
          code = getQueryString('code')
        }
        if(!code){
          window.location.href = urlParams
          return
        }
        setTimeout(() => {
          Taro.hideLoading()
        }, 6000);
      }
    
      render() {
        return (
          <View className='loading-container'>
          </View>
        )
      }
    const getAuthUrl = (appId, currentPageUrl ) => {
      const authUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appId + "&redirect_uri="+ encodeURIComponent(currentPageUrl) +"&response_type=code&scope=snsapi_base&state=TOKEN&connect_redirect=1#wechat_redirect"
      return authUrl
    }
    

    小程序加载的页面会请求两次, 这是和公众号授权机制有关,我们只需要在页面加载的第二次从detial中拿到code就可以了。

    展开全文
  • openId是微信对于用户的唯一辨识,只要有用户关注你的公众号,微信会通过公众号和用户微信号通过一种算法生成一种唯一标识码,也就是openId,用数学表达式也就是说: x=你的公众号,y=用户微信号,f()函数表示...

    文章的一开始,我先解释下微信公众号的openId。

    openId是微信对于用户的唯一辨识,只要有用户关注你的公众号,微信会通过公众号和用户微信号通过一种算法生成一种唯一标识码,也就是openId,用数学表达式也就是说:

    x=你的公众号,y=用户微信号,f()函数表示算法

    那么openId = f(x,y);

    后面就讲讲怎么获取到openId把,我下面先讲一种简易的方式(还有一种后续有空加上)

    1.在公众号后台设置回调的域名(大多情况下是你的项目)

    开发-接口权限-网页账号-用户授权获取用户基础信息中修改

    2.在页面上访问下面的网址

    https://open.weixin.qq.com/connect/oauth2/authorize?appid=*******&redirect_uri=你回调的地址&response_type=code&scope=snsapi_base&state=1#wechat_redirect

    上面的会返回到你回调的地址?code=xxxxxxxxx

    也就是说它会返回到你回调的地址并且带上code参数,一般情况下,回调的地址设置为后端的action即可,然后就可以获取到code了,当你获取到code,已经成功了一大半。

    3.然后在后端访问下面的网址

    https://api.weixin.qq.com/sns/oauth2/access_token?appid=***&secret=***&code=***&grant_type=authorization_code

    code的参数用刚刚返回的code值。

    4.上面网页将会返回json,其中openId就在其中。


    至此,openId就获取到了,但是要注意:此处只获取到了openId,也就是不需要用户授权的,要获取用户其它的信息请参考接口文档。还有就是每次获取openId请重新获取code,code值不要重复使用,防止出错。

    在微信页面上我是把获取到的openId保存在cookie中的,这样就可以防止openId的重复获取,我只在用户第一次进入或者cookie中的openId失效的时候进行再次获取的。至今没什么问题,但是我不知道大神们是把openId是放在哪里,我也只是给大家一个意见而已。

    如果文档中有什么问题希望指出,如果需要帮助请私信。


    展开全文
  • 最近做的关于微信公众号和小程序的项目比较多,这里先写一下如何通过微信公众号关联的小程序的openid获取其微信公众号openid,以完成推送消息模板之类的操作,相反操作道理一致。 前话 每个微信用户对于不同的...

    间隔很长时间之后的第一篇博客

    最近做的关于微信公众号和小程序的项目比较多,这里先写一下如何通过微信公众号关联的小程序的openid获取其微信公众号的openid,以完成推送消息模板之类的操作,相反操作道理一致。

    前话

    每个微信用户对于不同的微信公众号和不同的微信小程序都有自己不同的openid。你可以理解为:每个公众号和小程序都有自己的appid,然后系统用你的微信的某个码和不同的appid组合编码所以产生了不同的appid对应的不同的openid(意思就这么个意思)

    其次

    我们要通过小程序的openid获取微信公众号的openid,必要的准备工作:

    • 在微信公众号中将微信小程序和公众号关联起来

    • 注册一个微信开放平台,将微信公众号和微信小程序绑定到微信开放平台中

    接下来

    完成上面两个步骤后,你会在获取到微信公众号openid和微信小程序openid的时候解析获取到一个叫做unionid的东西(加粗划重点)

    此unionid相对于公众号和其绑定的小程序来说是一致的
    (再次加粗划重点)

    这样,当你在小程序中获取到他的openid之后,你就可以去查找你的微信公众号关注列表去获取他的openid和unionid,通过unionid的相同比对,最终获取到目标用户的微信公众号openid并完成你的推消息操作。

    点击消息模板进入
    
    	获得参数publicOpenid 请求获得参数litOpenid 和unionid
    	
    如果unionid信息不存在-------->
    
    	说明当前为新用户,其publicOpenid也不存在,则可用传递获得的参数
    
    publicOpenid进行统一新增
    
    如果unionid信息存在 -------->
    	
    	1> 当前信息publicOpenid和lieOpenid 都存在,为已注册用户,不予理会
    	
    	2> 当前信息litOpenid存在,publicOpenid 不存在
    	
    	(在用户第一次进入注册页面但未填写信息并退出小程序,后来又下拉进入小
    
    程序场景中存在可能)
    	
    	
    
    此时需要通过获取公众号列表的用户信息,然后解析获取unionid去匹配已存在的unionid去补充publicOpenid
    
    上面的是我个人在处理项目业务中的一个思路逻辑,有更优化的方法欢迎各位大佬指正,毕竟我菜!!!
    

    完!告辞~

    展开全文
  • 1.必须把小程序的域名加入到微信公众号中 2.必须为https认证
  •  为了识别用户,每个用户针对每个公众号会产生一个安全的OpenID,如果需要在多公众号、移动应用之间做用户共通,则需前往微信开放平台,将这些公众号和应用绑定到一个开放平台账号下,绑定后,一个用户虽然对多个...
  • 1、有微信公众号(appid与秘钥) 2、配置网页授权的域名信息 然后再菜单设置网页地址为:域名/wxAuth/login 就可以了 package com.example.demo.uinfo; import com.alibaba.fastjson.JSON; import ...
  • 2.设置访问微信公众号三方接口被授权获取token权限的白名单ip 3、然后登陆公众号平台进行授权域名设置,用于授权用户信息时在此域名下访问到授权文件 4、调用接口 public Result judgeIsFollow(String ...
  • 前言: 官方参考连接:... 1、用户同意授权,获取code public void getCode(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //appid是公众号
  • 任务要求:在系统内的网页上扫描二维码关注微信公众号,并且将关注微信公众号openid获取,存储到个人信息当中 涉及技术:Java语言,框架使用的是Springboot+bootstrap,微信公众号测试号; 问题:我在系统内放的...
  • 微信小程序获取公众号code以及openId

    千次阅读 2020-11-18 16:59:47
    没有需求就没有开发 需求在小程序内直接可以关注公众号 且如果已经关注则隐藏关注按钮;找了许多没有特别完整的 索性就把自己的做法给整理一下 步骤大致如下 1. 小程序关联公众号: 1.1 路径:小程序后台——设置...
  • Java 微信公众号获取openId

    千次阅读 2019-07-11 14:15:52
    首先了解openid到底是个啥:所谓的openid就是公众号普通用户的一个唯一的标识,只针对当前的公众号有效,开发者可以通过openID获取用户的基本信息,比如说:所在城市,省份,国家,性别等等。(对不同的公众号同一...
  • 微信官方文档——unionID 代码示例: 微信小程序——前端JS ... onLoad: function () { var that = this wx.login({ success: res =>... // 获取用户的openID 判断是否是新用户 wx.request({ url: ur.
  • 2、正式的微信公众号获取code时不需要用户关注公众号就可以直接获取,测试公众号需要关注之后才能正常获取,官方没有明说,我手边刚开始也没有正式公众号做测试,就一直没办法实现不关注公众号直接获取code的操作,...
  • using System; using System.Collections.Generic; using System.Configuration;...获取访问公众号链接得到的openid http://www.xxxx.com.cn/WeiXin/UserBind.aspx?openid=oepJesytIaBw4BSxENiv8geHddfdffdCE
  • 2.公众号方面获取unionid可以利用微信提供的接收事件推送的关注事件。用户关注公共号是获取用户信息,其中就会包括unionid,便可将两者绑定在一起。 优点:代码实现比较简单,思路清晰。 缺点..
  • * 将$appid和$secret参数替换成自己公众号对应参数,需要外网可以访问服务器环境测试 */ header("Content-Type:text/html; charset=utf-8"); date_default_timezone_set("Asia/Shanghai"); //define('code.....
  • 上一个博客也写了微信公众号获取OpenId,但是现在这个和上一个有什么区别呢。 其实呢,是差不多的,只是这个是通过用户授权...其实,授权和未授权的区别就是:未授权的获取方式是需要用户关注你的公众号的,但是,授权
  • openid 就是公众号关注者,获取后可以批量向用户发消息或向指定的用户发消息。 获取 用户openid有两种方式: 1.通过微信开放的 获取用户列表的接口,获取所有的用户openid。 2.通过网页授权获取openid(当前授权的...
  • 注:之前总结怎么进行本地公众号开发调试,时间一长忘记配置了,所以这里记录一下公众号开发配置,方便快速上手。 要进行微信公众号开发,那么要申请一个微信公众号就必不可少了。现在微信公众号类型有这几种:...
  • 微信用户不用关注公众号,可通过授权点击的方式,获取用户基本信息。也可在里面进行参数传递,如有疑问,
  • java微信公众号获取用户openid

    千次阅读 2020-05-13 15:48:51
    * 获取用户openid,获取token链接在公众号上 * */ @RequestMapping(value="getopenIDCODE.do") public String getopenIDCODE(String code, String openid, HttpServletRequest request, HttpServletResponse ...
  • 最近也是接了一个项目通过微信公众号获取openid拿取微信账号信息绑定 一、微信公众号是什么? 微信公众平台开发概述 | 微信开放文档...
  • 1.获取Unionid 必须要先获得Token $appid = "**************"; //公众号appid $secred = "*****************"; //secred $urls = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,878
精华内容 2,351
关键字:

获取已经关注公众号openid