Unionid详解

一、Unionid是什么意思

Unionid是一种唯一的用户标识符,用于在不同应用之间、不同平台之间唯一标识一个用户。通俗来说,每个用户在一个公众平台中的openid是不同的,但是在多个公众平台中的unionid是相同的。

Unionid是由微信公众平台生成,通常与用户的微信号和微信开放平台的appid绑定。在用户使用同一微信号关注多个公众号时,这些公众号即可共享同一个unionid,方便用户在不同境界下进行统一认证。

二、公众号获取Unionid

获取用户的Unionid需要在用户关注公众号时,将用户的openid和Unionid进行绑定。在用户授权登录公众号时,公众号可以通过OAuth2协议和微信开放平台网页授权机制,获取到用户的openid和Unionid信息。

公众号开发者可以通过在微信开放平台申请网页授权,获取用户授权后获得的access_token,进而拉取用户信息,包括Unionid。

三、Unionid不能为空啥意思

Unionid不能为空是指用户在同一微信开放平台下只有一个unionid,用户在不同微信开放平台下可能会有不同的unionid。如果微信开放平台上的公众号或小程序在获取用户信息时,发现该用户的Unionid为空,那么就会返回错误码40029,提示UnionID不存在。

四、静默授权获取Unionid

静默授权获取Unionid,是指用户在登录后无需手动点击确认的情况下,自动完成授权。在用户第一次登录的时候,公众号或小程序可以通过oauth2授权接口,获取到用户的openid和Unionid,之后不需要再次询问用户。

使用静默授权获取Unionid需要注意,用户必须在同一微信开放平台下,否则会存在Unionid不唯一的情况。在使用静默授权时,需要告知授权用户获取Unionid的原因和用途,确保用户信息安全。

五、Unionid被占用是什么意思

Unionid被占用表示一个Unionid已经被另一个微信开放平台用户绑定。开放平台会自动检验Unionid的唯一性,用户试图通过静默授权方式绑定已有的Unionid时,会返回错误码40003,提示“openid已绑定该UnionID”,此时需要开发者提示用户更换其他微信号进行授权。

六、微信获得Unionid

//使用code换取openid和access_token
function getAccessToken($code){
    $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".APPID."&secret=".APPSECRET."&code=".$code."&grant_type=authorization_code";
    $res = file_get_contents($url);//获取openid
    $resArr = json_decode($res, true);
    return $resArr["openid"];
}

//通过openid获取用户信息(包括Unionid)
function getUserInfo($openid){
    $accessToken = "accesstoken";
    $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$accessToken."&openid=".$openid."&lang=zh_CN";
    $res = file_get_contents($url);
    $resArr = json_decode($res, true);
    return $resArr["unionid"];
}

七、Unionid和Openid区别

Unionid和Openid都是微信公众平台提供的用户标识符,用于唯一标识用户。但是它们的作用范围和使用方式有一定区别。

Openid主要用于单个公众号或移动应用中,用于标识用户在当前应用中的唯一性。而Unionid则是用于多个公众号或移动应用之间,唯一标识一个用户的标识符。

八、微信重置Unionid

微信提供了一种机制,可以让用户删除微信公众平台下所有去授权的信息,包括Unionid。当用户需要在同一微信开放平台下重新绑定Unionid时,需要删除之前的授权信息,并重新登录获取授权信息。

九、中智e家显示Unionid

public function user_info(){
    $openid = session('openid');
    $unionid = session('unionid');
    $nick_name = session('nickname');
    $user_headimgurl = session('headimgurl');
    if($openid && $unionid){
        $uid = M('user')->where(['openid'=>$openid])->getField('id');
        if($uid){
            redirect(U('user/info'));
        }else{
            $this->assign('openid', $openid);
            $this->assign('unionid', $unionid);
            $this->assign('nick_name', base64_decode($nick_name));
            $this->assign('user_headimgurl', $user_headimgurl);
            $this->display();
        }
    }else{
        $code = I('code');
        $user_control = new UserControl();
        $baseinfo = $user_control->getWxAccessToken($code);
        session('openid', $baseinfo['openid']);
        session('unionid', $baseinfo['unionid']);
        session('nickname', $baseinfo['nickname']);
        session('headimgurl', $baseinfo['headimgurl']);
        redirect(U('user_info'));
    }
}

原创文章,作者:TFQVG,如若转载,请注明出处:https://www.506064.com/n/331792.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
TFQVGTFQVG
上一篇 2025-01-20 14:11
下一篇 2025-01-20 14:11

相关推荐

  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • Java BigDecimal 精度详解

    一、基础概念 Java BigDecimal 是一个用于高精度计算的类。普通的 double 或 float 类型只能精确表示有限的数字,而对于需要高精度计算的场景,BigDeci…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25

发表回复

登录后才能评论