精华内容
下载资源
问答
  • 一、前置条件1、获取公众号的appid(公众号唯一标识) 页面导向:开发 --> 基本配置 2、授权后重定向的回调链接地址(页面设置:开发 --> 接口权限 --> 网页服务 --> 网页帐号-->网页授权获取用户基本...

    一、前置条件

        1、获取公众号的appid(公众号唯一标识)

             页面导向: 开发 --> 基本配置

    bb051ff805bf9dfd3cc8d1ed6eb1a015.png

        2、授权后重定向的回调链接地址(页面设置:开发 --> 接口权限 --> 网页服务 --> 网页帐号 --> 网页授权获取用户基本信息)。开发的项目需要放到已经解析好服务器域名的服务器下,同时把Mp***.text文件放到服务器根目录下,此时你的服务器必须能联通外网也就是有公网IP,并且80端口是打开的,可以使用阿里云等服务器,默认配置就可以了。

              注:该链接地址是域名,不需要协议头。若无域名可注册测试账号进行测试(用测试账号测试时,地址一定是 ip:port 才可以测试成功)。

    二、网页授权的两种方式

        根据需要确定静默授权还是非静默授权。

        1、静默授权:以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面,只能获取openid)

        2、非静默授权:以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。(可获取openid、用户头像等)

    三、前端获取流程

        1、用户同意授权获取code(并附前端代码)

    // code说明 :code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。const appId = '';  // 公众号的appidconst authCode = getUrlParam('code')  // 截取路径中的codeif (authCode == null || authCode === '') {  const local = window.location.href; // 获取当前的页面路径,也是回调地址  window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${encodeURIComponent(local)}&response_type=code&scope=snsapi_userinfo#wechat_redirect`;}// 获取到路径中的code后,将code传给后台获取用户信息// 截取code的方法export function getUrlParam(name: string) {  const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)')  const url = window.location.href.split('#')[0]  const search = url.split('?')[1]  if (search) {    const r = search.substr(0).match(reg)    if (r !== null)      return unescape(r[2])    return null  } else    return null}

        2.通过code换取网页授权access_token(获取access_token由后端发起)。为什么,前端不能一起把获取code和获取openId的操作都做了,还要请求后台,让后台获取openId?

    bdb4796e5f66bb2448085d85a7ae15ff.png

      后台通过appid、AppSecret、code 获取openid。前后端都获取到openid,并通过openid做用户绑定和查询。

    展开全文
  • 今天被别人问了个问题,微信的OpenID是什么?虽然已经大半年没写过代码了,但我居然还...涉及到的相关知识点有:OpenID和unionidOpenID:为了识别用户,每个用户针对每个公众号或小程序等应用会产生一个安全的OpenID...

    9cd26714ae0bf43b3557d81105f8acc6.png

    今天被别人问了个问题,微信的OpenID是什么?虽然已经大半年没写过代码了,但我居然还记得挺清楚的,那就写出来,鬼知道什么时候又忘了。

    之前做过一个引导用户将微信号与公司的手机账号绑定的需求,虽然乍听上去挺简单,但其中涉及到的细节却比较多,而且也踩到了几个坑。涉及到的相关知识点有:

    OpenID和unionid

    OpenID:为了识别用户,每个用户针对每个公众号或小程序等应用会产生一个安全的OpenID,公众号或应用可将此ID进行存储,便于用户下次登录时辨识其身份,或将其与用户在第三方应用中的原有账号进行绑定UnionId:UnionId也是用户的标识符,但它与OpenID不同的是,同一个微信用户,登录同一个开发主体下的多个小程序或公众号的时候,分配的UnionId是一样的。

    可以打个通俗的比喻,比如某个用户是万达商场的会员,那么UnionId就是这个用户对应的万达会员标识,而这个用户又比较爱买买买,在万达商场的很多商店下面都是会员,那么此时每个商店赋予这个用户的会员号就相当于OpenID了,总而言之,在同一个开发体下,UnionId是唯一的,而OpenID不一定唯一。

    微信授权登录

    如果用户在微信客户端中访问第三方网页,那么第三方网页需要通过微信网页的授权机制,来获取用户的基本信息,进而实现业务逻辑。用户授权登录的方式分为两种,一种是显式授权登录,一种是静默的授权登录。显式的授权登录页:这种方式是以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。需要用户手动点击登录按钮同意授权,可以获取较多的信息,比如用户头像、昵称、openId、unionId、是否关注公众号等。如下是常见的授权页面:

    664b139813a2f514f0b2db45afcd17fa.png

    静默授权登录页:用户在无感知的情况下进行了授权。这种授权是以snsapi_base为scope发起的网页授权,是用来获取用户的openId,用户无需进入授权页就进入了第三方业务页。

    授权流程

    整个授权流程在微信开发者文档已有了比较清晰的解释,具体可点击这里进入微信网页授权。

    d4dda139e25b800ba99ef8896d4286fc.png

    整个过程可以总结成以下步骤:

    1. 引导进入授权页
      用户授权需要进入以下页面(页面链接参数解释如上表所示):https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE& state=STATE#wechat_redirect
    2. 用户同意授权(scope=snsapi_base无此步骤)
    3. 授权后成功后服务器将code回传回来并重定向到第一步配置的回调页面
    4. 微信公众号通过code向微信服务器请求openId
    5. 微信公众账号通过Access Token向服务器请求用户信息(scope为snsapi_base时无此步骤)
    6. 服务器将用户信息回送给微信公众账号(scope为snsapi_base时无此步骤)
    7. 微信公众号通过openId向本服务器请求用户信息(若此openId已与第三方账号有所关联,那么可依据openId查询到用户在第三方数据库中的信息)
      整个流程图如下所示:

    c64c1dfa66b645e009f980a0bb723691.png

    相关代码

    用户进入页面时首先判断是否存在微信返回的授权code,如果没有,则代表用户未进行授权,需要进入授权页

    function getUserInfo(callback){
         // 如果认证的code存在
         if (params.code) {
             const code = encodeURIComponent(params.code);
             const data = {
                 mchId: 'WX001',
                 code,
             };
             const _params = new Params(params);
             delete _params.code;
             history.replaceState(null, null, _params);
             $loader.show();
             request('/node_api/user.do?fn=wxUserInfo', 'GET', data).then((res) => {
                 $loader.hide();
                 if (res.code === 0){
                     const userInfo = {};
                     try {
                         userInfo.wxInfo = res.content.userinfo || {};
                         userInfo.isbind = res.content.isBind;
                         userInfo.channelUserId = res.content.channelUserId;
                     } catch (ex) {
                         userInfo.wxInfo = {};
                         userInfo.isbind = false;
                     }
                     if (!userInfo.isbind) {
                         const userToken = {
                             accessToken: res.content.accessToken || '',
                             channelId: res.content.channelId || '',
                             channelUserId: res.content.channelUserId || '',
                             unionId: res.content.unionId || ''
                         };
                     // 将userToken写入cookie
                     document.cookie = 'userToken=' + encodeURIComponent(JSON.stringify(userToken));
                 }
                 callback(userInfo);
             }else{
                 // 请求sso/login接口失败,弹提示信息
                 showTextMessage(res.msg);
             }}, () => {
                 $loader.hide();
                 showTextMessage('网络异常,请稍后再试');
                 deleteCode();
             });
         }else{
             // 无code 则进行微信认证
             authorize();
         }
     }
    展开全文
  • 没有需求就没有开发 需求在小程序内直接可以关注公众号 且如果已经关注则隐藏关注按钮;找了许多没有特别完整的 索性就把自己的做法给整理一下 步骤大致如下 1. 小程序关联公众号: 1.1 路径:小程序后台——设置...

    微信小程序判断用户是否关注公众号-简要流程
    版权 原文链接:树先生https://blog.csdn.net/weixin_39601000/article/details/105288342
    没有需求就没有开发 需求在小程序内直接可以关注公众号 且如果已经关注则隐藏关注按钮;找了许多没有特别完整的 索性就把自己的做法给整理一下 步骤大致如下

    1. 小程序关联公众号:
    1.1 路径:小程序后台——设置——关注公众号

    1.2 关联以后就可以直接在小程序内使用“”组件了 对应参考链接:https://developers.weixin.qq.com/miniprogram/dev/component/official-account.html

    2. 获取用户是否关注公众号标识
    2.1 实现:借用了小程序“web-view”组件来实现 注意需要先去小程序开发设置——业务域名 添加公众号设置的网页授权域名才可以访问;对应参考链接https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html

     **2.1.1 小程序设置跳转路径 获取code:URL必须是上面设置好的域名下的路径**
    
    <web-view src="https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=URL&response_type=code&scope=snsapi_base#wechat_redirect"></web-view>
    
     2.1.2 通过code换取公众号openid和网页授权access_token (就是正常获取公众号openid流程 参考链接:[https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html](https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html))
    
    https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
    
     **2.1.3 获取通用接口access_token** (参考链接:https://developers.weixin.qq.com/doc/offiaccount/WeChat_Invoice/Nontax_Bill/API_list.html#1.1%20%E8%8E%B7%E5%8F%96access_token)注意:2.1.2获取到的网页授权access_token是无法用于后续请求的
    
    https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
    
     **2.1.4 通过通用接口access_token和公众号openid获取用户基本信息(即是否关注公众号标识)**参考链接:[https://developers.weixin.qq.com/doc/offiaccount/User_Management/Get_users_basic_information_UnionID.html](https://developers.weixin.qq.com/doc/offiaccount/User_Management/Get_users_basic_information_UnionID.html)
    
    https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
    
     建议将获取到的公众号openid与小程序openid对应关系 保存进表;供后续调用
    

    3. 利用web-view的JSSDK接口携参跳转回小程序
    //subscribe即为返回的是否关注公众号标识

    <script>
    wx.miniProgram.switchTab({url: '/pages/index/index?subscribe='+subscribe})
    </script>
    
    展开全文
  • 1.已关注公众号 2.公众号是服务号 3.线上服务器 4.公众号与小程序已经关联 用户小程序下单或from,给客户发送小程序模板消息,然后给商家发送公众号模板消息。小程序的没问题。公众号是事先让商家关注、授权...
  • 已经公众号粉丝的openid获取到, 现在就可以通过openid获取这个用户的详细信息了。 微信提供给我们的用户信息包括下面几个方面: 昵称、头像、性别、所在城市、语言和关注时间等等, 子恒老师将跟...

    通过上一节课程

    你已经把公众号粉丝的openid获取到,

    现在就可以通过openid来获取这个用户的详细信息了。


    公众号获取用户信息


    微信提供给我们的用户信息包括下面几个方面:

    昵称、头像、性别、所在城市、语言和关注时间等等,

    子恒老师将跟你分享获取粉丝信息的详细过程…

    公众号根据openid获取用户信息视频教程在线观看

    http://edu.csdn.net/course/play/2963/48747

    展开全文
  • 本文demo下载:wisdomdd.cn在开发微信公众号时,一旦用户关注了微信公众号,用户后续的操作已经跟用户的信息进行了绑定,那这些绑定的信息其它是通过OpenId进行的,每个用户关注不同的微信公众号时会产生唯一且不同...
  • 最近接到新需求,为将用户引流到公众号,官网实现...1、微信扫码进入微信关注页面,若关注微信向之服务器配置中的接口发送一条信息,说明用户已经关注,这时就可以根据拿到到openid获取用户信息实现登陆。 2、结果...
  • 对于不同用户,所对应的OpenID是不一样的),但是还有一个问题就是只有当微信用户关注了微信公众号后,此时对应返回的subscribe的值为1的时候,此时说明的是微信用户已经关注了微信公众号,值为0时,表示没有关注。...
  • 目前在做一个获取公众号所有用户信息的工具,但是公众号有15W+的关注者 代码步骤如下: 1.调用微信接口 https://api.weixin.qq.com/cgi-bin/user/get?access_token={0} 获取到所有的用户信息,遍历...
  • 最近写了一个微信公众号的项目,要获取用户详细信息及是否关注公众号,需要调用微信的接口。因为第一次用,所以开始的时候是很懵逼的,后来看了很多遍的文档以及百度了很多的CSDN才弄明白了一点。 微信公众号开发...
  • 微信 JSAPI 支付 微信内部起调H5支付 支付... // 强制关注公众号获取openid getCode = function () { var code = getUrlParam('code'); // 截取路径中的code,如果没有就去微信授权,如果已经获取到了就直接传cod
  • 中讲解了如果通过微信授权2.0snsapi_base获取已经关注用户的基本信息,然而很多情况下我们经常需要获取非关注用户的信息,方法如下: 第一步和之前讲的一样:获取code,但是scope使用方法是snsapi_userinfo; 第二...
  • 微信公众号消息群发

    2019-02-11 15:11:21
    关注了微信公众号的微信用户群发消息。(可以是所有的用户,也可以是提供了微信openid的微信用户集合) 2、基本步骤 前提:  已经有认证的公众号或者测试公众账号 发送消息步骤: 发送一个请求微信去获取...
  • 基本信息包括openid headming 。。 思路:  1.微信公众号后台接口权限配置吧,需要填写验证服务器的域名例如 wx.xxx.com下面的所有目录下的都能可以作为接收信息页面  2.获取code  3.用code拼装成授权链接即可 ...
  •  向关注了微信公众号的微信用户群发消息。(可以是所有的用户,也可以是提供了微信openid的微信用户集合) 2、基本步骤 前提:  已经有认证的公众号或者测试公众账号 发送消息步骤: 发送一个请求微信去...
  • 这里就要求我们是校验用户是否已经关注了,所以我们就需要用到微信的----获取用户基本信息接口 获取用户基本信息(包括UnionID机制) 开发者可通过OpenID获取用户基本信息。请使用https协议。 接口调用请求...
  • (可以是所有的用户,也可以是提供了微信openid的微信用户集合)2、基本步骤前提:已经有认证的公众号或者测试公众账号发送消息步骤:发送一个请求微信去获取access_token发送一个请求去请求微信发送消息相关微信接口...
  • 同一个微信开放平台下的相同主体的App、公众号、小程序,如果用户已经关注公众号,或者曾经登录过App或公众号,则用户打开小程序时,开发者可以直接通过wx.login获取到该用户UnionID,无须用户再次授权。 openid ...
  • unionId一个微信开放平台下的相同主体的App、公众号、小程序的unionid是相同的,这样就可以...App、公众号、小程序,如果用户已经关注公众号,或者曾经登录过App或公众号,则用户打开小程序时,开发者可以直接通过 w...
  • 同一个微信开放平台下的相同主体的 App、公众号、小程序,如果用户已经关注公众号,或者曾经登录过App或公众号,则用户打开小程序时,开发者可以直接通过 wx.login 获取到该用户UnionID,无须用户再次授权 ...
  • H5中获取微信头像、昵称

    千次阅读 2018-11-05 13:52:01
    第一种是默认登录方式,即不需要弹出授权框,只会有一个“正在登录”的弹窗,这种方式获取到的数据仅限于该用户已经关注了对应公众号之后,如果是未关注公众号的用户只能获取openid。那么针对这种情况,就需要使用...
  • 微信小程序获取不到unionid

    千次阅读 2018-05-21 11:59:20
    已经关联微信开放平台的小程序,一般可以通过wx.login登录接口获取到unionid,但是如果微信公众号和小程序都关联了微信公众平台,而且用户从未关注过微信公众号,那么通过wx.login不能获取到unionid,只有session_...
  • 最近在做公司的微信接入部分。目前接入部分代码已经由别人写好,但是还有很多问题。经过几天痛苦的看文档和代码,整理一下接入流程,大致相当于...第一种可以不经过授权,如果用户已经关注公众号,则该公众号的...
  • 掌握用户的第一步就是将已经关注的粉丝信息保存起来,这个时候就用到获取用户列表接口。公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号OpenID是唯一的...
  •  掌握用户的第一步就是将已经关注的粉丝信息保存起来,这个时候就用到获取用户列表接口。公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号OpenID是唯一...
  • 微信授权

    2019-01-17 11:50:00
    微信授权分为两种,一种是以snsapi_base为scope发起的网页授权,无授权窗口弹出,用于获取...其实对于已经关注公众号的用户,再次进入该公众号,即使scope为snsapi_userinfo,也相当于静默授权,用户无感知。 具...
  • 1.针对服务号,如果已经接...3.要想通过h5页面获取用户信息,服务号必须通过2次授权方式获取用户openid,订阅号只能通过发送带openid和appid的链接给用户,用户点击后从h5页面获取用户信息,前提是确保用户已经关注...
  • httpClient实现

    2017-07-19 15:29:00
    关注了微信公众号的微信用户群发消息。(可以是所有的用户,也可以是提供了微信openid的微信用户集合) 2、基本步骤 前提:  已经有认证的公众号或者测试公众账号 发送消息步骤: 发送一个请求微信去获取...
  • JAVA实现微信支付V3

    2018-07-04 16:54:00
    喜欢的朋友可以关注下,粉丝也缺。 相信很多的码友在项目中都需要接入微信支付,虽说微信支付已成为一个普遍的现象,但是接入的过程中难免会遇到各种各样的坑,这...1.获取用户openid 2.获取token,注意获取的t...

空空如也

空空如也

1 2
收藏数 31
精华内容 12
关键字:

获取已经关注公众号openid