HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    小程序的openid唯一吗(小程序 openid还是unionid)

    发布时间:2023-03-20 16:17:32     稿源: 创意岭    阅读: 1515        问大家

    大家好!今天让创意岭的小编来大家介绍下关于小程序的openid唯一吗的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等

    只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端

    官网:https://ai.de1919.com

    如需咨询小红书相关业务请拨打175-8598-2043,或微信:1454722008

    本文目录:

    小程序的openid唯一吗(小程序 openid还是unionid)

    一、微信用户体系和自有用户体系之间的关系

            微信小程序因为有自身的用户体系存在,使得项目的用户管理部分在开发和使用过程中容易产生很多困惑。最近的一个项目让我对这类问题整体思考了一下。一家之言,以问答的形式整理出来,给需要的人一点思路。

    openId和自己的用户体系应该做成什么关系?

            首先,我们设定一个userId为我们自己项目的用户的唯一标识。那么此时,对于某个用户来说,就有了两个唯一标识,一个是我们自身体系的userId,另一个是openId。在整个项目中,这两个都对应了唯一的用户,即根据其中任何一个都能且只能查询到一个用户。因此我们得出结论:一个openId只能同时绑定一个userId,在我们的用户表中,openId可空但是不可重复。userId不可空不可重复。

            所以,我们可以看到很多app在登录的时候提供了微信登录和微信解绑,我认为前者目的是将openId和userId绑定,后者是将openId删除。

    是否允许多微信号登录同一个用户帐号?

        这个问题看似好回答,实际上有一个坑。按照第一个问题的思考,一个openId和一个userId绑定,自然这个微信号和用户绑定,怎么可能多微信登录呢?我们想两个场景:场景一,用户打开小程序,openId自动登录,获取到用户信息,登录成功;场景二,用户在小程序中用手机号验证码登录(此时openId不是手机号对应绑定的openId),理论上也应该能登录成功。

            上面第一个场景没问题。第二个场景下,就会造成此时登录成功的openId和用户系统中保存的openId不一致。开发时,要特别注意第二种情况,为了友好性,我们应该允许用户用同一个微信登录不同的帐号,但是必须要注意一点:无论登录多少帐号,openId只能和一个userId绑定。

            由以上结论也可以得到一个推论:即我们保存和查询用户业务信息时应该尽量使用userId。

    微信小程序自动登录怎么做?

            继续思考上面的场景一,我们是怎么做到自动登录的呢?答案是openId,因为这个是微信小程序中唯一身份证明。在app.js中向服务端传入openId,换取userId。如果顺利换取,则登录成功;否则,说明该微信没有绑定用户,跳转到登录页面即可。这样还有一个好处,尽管别的微信登录过你的账户,只要不做微信绑定,下次他也不会自动登录上你的帐号。

    如何让微信小程序登录状态失效?

            上面的自动登录有一个问题,不管用户多久没登录,只要openId绑定过user,即可自动登录。某些应用并不希望用户随时都能自动登录。

            我实现的策略是加入一个token。这个token在服务端的缓存中维护,为这个token增加一个失效时间。微信小程序登录成功之后获取一个token,以后每次登录都用这个token换取userId。如果失效期到,则登录失败,跳转到登录页面。

    开发中怎么处理微信小程序的登录授权和创建用户?

            微信的授权方式可以说是越来越严格,在此不讨论具体的授权流程。我认为这两个可以同时做,也可以根据需求分开做,比如有些功能必须是登录状态才可以使用,有些功能是授权状态才可以使用。

            关于用户先就写这么多,以后想到了再补充吧。

    我在开发中遇到的更多的坑都已经记录在easyDemo小程序中,希望我的demo能给你easy。我还会持续更新easyDemo,欢迎收藏。

    二、微信小程序UnionID 和授权机制

    如果开发者拥有多个移动应用,网站应用,公众号和小程序,可以通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开发平台账号下的移动应用,网站应用,公众号和小程序,用户的 UnionID 是唯一的。 换句话说,同一个用户,对同一个微信开发平台的不同应用,UnionID是唯一的。

    }

    获取完用户信息后通过 wx.login 获取用户的 code 临时登陆授权码,传给后台服务器调用 code2session 获取用户的 openid (用户的唯一表识,保存本地)。然后将openid 和用户信息录入用户表,回调之后前端拿到录入用户的生成的userId,保存到本地。保存到本地的openid和userId会在用户卸载小程序后失效。如果失效,用户需要重新授权。

    开发者可通过OpenID来获取用户基本信息。请使用https协议。

    参数:

    公众号和小程序均可以使用 AppID 和 AppSecret 调用接口来获取 access_token 。 AppID 和 AppSecret 可在“微信公众平台-开发-基本配置”页中获得(需要已经成为开发者,且帐号没有异常状态)。调用接口时,请登录“微信公众平台-开发-基本配置”提前将服务器IP地址添加到IP白名单中,点击查看设置方法,否则将无法调用成功。小程序无需配置IP白名单。

    三、一直没明白小程序的openid是什么作用是啥

    全球每个国家里面的每个公民都有一个身份证号,一个个国家就类似一个个小程序,每个用户进入一个小程序就会分配一个openid,类似于身份证号,用于唯一身份识别的标识。

    四、微信支付服务商-服务商小程序支付脱坑

    时间:2018年11月13号

    最近, 公司抽风, 项目中需要为我们小程序中"服务的商户"开通微信支付功能.

    与同事们研究决定,还是申请为微信服务商比较靠谱~

    但是~ 不靠谱的事来了. 废话不多说. 一步步的来.

    第一步: 申请为服务商 ( 有重点!!!!!!!统一下单坑点之一 )

                   先去 公众平台 申请一个 服务号(只有服务号才可以支付和申请商户号,必须是认证过的.300元)

                    注意:保存好appId 与 appSecret  统一下单中的appId指的是这个!!!!!!!!!

                   申请完成后, 点击微信支付, 成为服务商,上传资料. 审核.300元

                   申请页面如下:(这个是已经申请好了的)

                   在这里, 说明一下. 微信支付服务商是从已经认证过的服务号里申请的, 默认与该服务号绑定 .微信乱七八糟的名字很多.这里的服务号指公众号.

                    申请小程序.交纳300元认证费. 注意:此次说明小程序主体信息与微信支付服务商主体信息一致(如果不一致请看官方坑爹文档)

                    申请开放平台~ 再来300元~ 在开放平台把公众号与小程序关联起来.

    第二步:微信公众号服务号、小程序与微信支付服务商的账号准备好之后, 接下来配置微信支付服务商账号.

                    登录微信商户平台

                    进行配置   账户中心->API安全->设置秘钥

    秘钥这是个大坑~~~留着.继续往下走.遇到了再回来

    接下来是  服务商功能->特约商户申请

    商户申请审批成功之后 (此时微信会给你邮箱发送特约商户的商户号和密码,与一般支付的那种商户号一样,可以登录)  

    特约商户管理->配置(还在服务商账号下)

    这里的支付授权目录必须要正确. (别忘记了微信支付服务商的支付目录以及回调地址在服务商账户里设置!这里的回调是地址!是地址!是地址!和目录是有区别的!!!)

    特约商户APPID配置.我们填写之前申请好的小程序appID.否则无法取到官方所为的sub_openId

    第三步: 统一下单

    根据官方的文档  https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_sl_api.php?chapter=9_1

    去发起统一下单. 

    然后就是各种的报错!

    商户ID与APPID不匹配

    sub_openid  and sub_appid not match

    签名失败

    等错误.

    首先~ 你得保证,你的签名没有问题. 顺序正确,没有传入空值,不存在大小写错误,在签名验证工具中可以通过.如果还是报错签名失败~回到第二步, 服务商设置秘钥的那里. 来来回回的换吧~ 2到3次 基本就ok了

    在这里, 对这个坑爹的参数表.做一下说明(写这文档的人~~~我就!@#@$%@#@!##$%你了!)

    看这文档写的, openId 我是传还是不传?! 我去年买了个表的.不会说话嘛!

    还有这个网页授权获取用户信息,很有歧义好嘛!

    服务商模式下, 小程序支付.openId 不传! 不传! 不传!  签名的时候直接省略这个参数!

    接下来说sub_openid.  坑啊~~~

    这里尼玛就不是什么sub_openId  就尼玛是openId啊!!!!!!!! 哪来的?!  wx.login 获得code 再通过code 换来的.

    有人就高兴了. wx.login拿的openId啊? 我早就获得了~  错!!!!! 不是这个!!! 虽然方法一样! 内容一样! 但是他给的确实是有问题的!这一步的登录不能省!继续往下看.!(去年买了个大表的! 文档你写清楚啊! 既然目的都是OpenId 为什么要取两次!你TM得告诉我这里不一样啊!)

    对于openId的解释, 微信官方是说, 一个用户与多个小程序有多个openId,用户与一个小程序的openId唯一.

    然后,经过测试:

    wx.login({

          success: function (login_success) {

            wx.getUserInfo({

              lang: 'zh_CN',

              success: function (getUserInfo_success) {

                var code = login_success.code;

                var encryptedData = getUserInfo_success.encryptedData;

                var iv = getUserInfo_success.iv;

                //在这里去换openId  (之前我们项目中保存过一次小程序的openId  这时候再去取的时候, 变了~~ )

                 }

           });

         })

    至此  统一下单 算是OK了. 接下来. 去排坑~ 调起支付~ 正在研究中~ 后期补全

    以上就是关于小程序的openid唯一吗相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。


    推荐阅读:

    写论文小程序

    余额互转小程序(代收款在线网站)

    小程序转让会不会有骗局(小程序转让陷阱)

    广西园区景观设计服务(广西园林景观设计)

    怎么设计公司商标(怎么设计公司商标图案)