没认证的微信怎么获取openid

没认证的微信怎么获取openid,第1张

通过菜单打开url,在网页页面里获得用户的openid,

  获取微信用户的openid目前有两种方法:

  一是先回复一条图文消息,将用户的openid带在链接上,然后用户通过点击图文消息的链接打开最终的页面,这么做用户体验非常非常不好,而且每个菜单都得这么干;

  二是调用服务号的高级接口,可是我们大部分都是用订阅号。

  那怎么通过js获取微信用户的openid?

  答:目前微信服务号在网页获取微信用户openid就这两种方法,订阅号只能通过图文或文本消息打开网页,自己传用户的openid。

  如果微信订阅号什么都能做,那划分订阅号与微信服务号的意义在哪呢?

网页上不能直接获取,只能通过Oauth 20接口来获取。

但是该接口是属于高级接口,得需要给腾讯交钱的,而且只有服务号能享用。

对于订阅号来说,只能通过接口来获取。说白了,你能拿到OpenID的Session,是你服务器和微信服务器之间的Session,不是和客户之间的Session。

你接到用户发来的信息后,可以在24小时内给用户回复信息,无论是图文信息还是文字信息,都可以加入链接。此时,你可以将OpenID构造到URL里发给用户。当用户点击后,你和客户之间的Session就可以获取到他的OpenID。

因为你和客户之间的OpenID是明文满天飞,这里面要注意这么几个安全性问题:

1、发图文块的时候,要发两条信息,单条是可以被转发的,两条的话,用户就无法转发,只能删除了。避免用户将自己的OpenID泄露。

2、用户点击图文块的那张页面进去后,要隐藏右上角的分享图标。

3、要判断浏览器的UserAgent是否来自于MicroMessage

4、如果目标页面需要分享,要构造一个Form表单,用POST的方式将OpenID传过去。

5、实际项目经验中,需要对传来的参数拼在一起,做一下SHA1签名认证。

6、服务器能用SSL,就尽量用SSL,证书也不贵,大概也就3000-5000左右,让公司出钱买。

企业可以在应用中获取用户的地理位置,步骤如下:

1)开启回调模式时,管理员必须先为应用配置服务器URL、Token及EncodingAesKey;

2)开启地理位置上报;

3)选择合适的地理位置获取方式:

a)进入应用时上报(离开时不会上报);

b)或处于应用中时每5秒上报一次。

登录微信公众平台后台获取公众号的AppId,设置回调地址。回调地址设置页面向导:开发>接口权限>网页服务>网页授权>修改。开发的项目需要放到已经解析好服务器域名的服务器下,同时把Mptext文件放到服务器根目录下,此时你的服务器必须能联通外网也就是有公网IP,并且80端口是打开的,可以使用阿里云等服务器,默认配置就可以了。

openId是用户在当前公众号下的唯一标识(‘身份证’),就是说通过这个openId,就能区分在这个公众号下具体是哪个用户。

openId有什么用:假如用户A在当前公众号下购买了一件商品,用户的下单信息肯定要存储到后台数据库,那根据什么进行存储呢?openId是用户在当前公众号下的唯一标识,通过openId和用户的下单购买信息进行键值对的数据绑定。那么我要查询该用户购买过什么商品,就能够通过openId去查询,并且数据是唯一的,不会和另外的用户数据有冲突。

拓展:UnionID:一个商家或公司可能会有多个公众号,假如用户A同时都关注了这个公司下面的三个公众号,那么这个用户就会有三个openId(一个公众号就对应一个openID)。如果作为开发者的我们,要对这个用户在这三个公众号下消费的数据进行汇总,我怎么获取到这三份数据(同一用户的)?答案是UnionId,微信开发者文档:如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为同一用户,对同一个微信开放平台下的不同应用(移动应用、网站应用和公众帐号),unionid是相同的。就是说如果要获取用户在同一公司不同公众号下的数据,后台表结构不但要关联openId,还要关联UnionId。

大致思路如下,获取到openID后,wxshareAppMessage方法中query字段传入自身openID,其他玩家进入游戏后onShow() 或者是getLaunchOptionsSync() 中检测 query字段中是否有openID存在,若存在将邀请人的openID 发送给服务器,服务器下发,邀请过程完成(若需要展示头像,名称等,那么可以将每个玩家的头像信息与名称获取到,在登陆时发送给服务器,服务器有数据,邀请成功再次推下来就好了)

我这边的做法需要两个条件

1需要服务器配合(转发消息)

2需要获取到openId(邀请列表需要展示已邀请玩家头像跟名称的话 那么还需要获取玩家信息授权)

下面只讲述前端实现

第一步 获取code 换取openId

    调用wxlogin 接口获取到code 登录凭证,因为微信小游戏程序内不能出现apiweixinqqcom 所以获取openId 的工作只能交给后端处理,一个简单http请求就好了

第二步 转发带参数

    使用wxshareAppMessage分享卡片时 将自身openID传入 query 字段

第三步 启动检测

    在每次启动微信小游戏时,都检测一下getLaunchOptionsSync() 中的 query字段是否含有openID字段,或者在onShow() 时检测 query 字段都是可以的,看个人需求

第四步 发送给服务器

    将获取到的openID字段发送给服务器,服务器处理完毕后下发奖励或者其他操作等

自此邀请好友列表就已经完成了

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 没认证的微信怎么获取openid

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情