扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
在拥有多个智能小程序的主体的情况下,智能小程序提供的 unionid ,使开发者可以实现跨小程序的用户区分。从用户角度看,每个用户在同一主体下的小程序内 unionid 是唯一的。unionid 获取依赖用户登录授权,请妥善处理用户未授权场景。

甘泉网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联2013年至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
获取 unionid 。
Web 态说明:Web 态尚未支持。
https://openapi.baidu.com/rest/2.0/smartapp/getunionid?access_token=${access_token}
Header 参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| Content-Type | Application/x-www-form-urlencoded | 是 | HTTP 的实体首部字段,浏览器原生 form 表单 |
query 参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| access_token | String | 是 | 接口调用凭证 |
post 参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| openid | String | 是 | 用户 openid ,需要经过用户登录授权过程获取 |
| 参数名 | 类型 | 描述 |
|---|---|---|
| errno | Int | 错误码,详情见下方错误码 |
| errmsg | String | 错误信息 |
| request_id | String | 请求 ID ,标识一次请求 |
| data | Object | 详细数据,errno 为 0 的情况下才有意义 |
data 字段描述
| 参数名 | 类型 | 描述 |
|---|---|---|
| unionid | String | 小程序用户 + 开发者主体维度唯一的 id |
{"data": {"unionid": "St6PVMkgMDeh92Uq2EWfx6H"},"errmsg": "succ","errno": 0,"request_id": "2321772211","timestamp": 1563886782}
| 错误码 | 描述 |
|---|---|
| 0 | 正常 |
| 400 | 参数错误,请检查 openid 是否传递正确 |
| 10010500 | 服务端内部异常,请稍候重试 |
/*** php curl方式获取unionid*/// 参考 accessToken 获取文档$accessToken = "xxx";// 用户openid$openid = "xxxx";$ret = getUnionid($accessToken, $openid);var_dump($ret);/*** @desc 发起获取unionid请求*/function getUnionid($accessToken, $openid){$url = "https://openapi.baidu.com/rest/2.0/smartapp/getunionid?access_token={$accessToken}";$postDataArr = array('openid' => $openid,);$resp = curlPost($url, $postDataArr);return $resp;}/*** @desc curl POST请求,可以按照自己实际编程环境替换* @param string $url 请求的url地址* @param array $postDataArr 传递的数组参数* @return string 检测结果json字符串*/function curlPost($url, $postDataArr){$headerArr =array("Content-type:application/x-www-form-urlencoded");$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, $postDataArr);curl_setopt($curl,CURLOPT_HTTPHEADER,$headerArr);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($curl);curl_close($curl);return $output;}
/*** Go http PostForm 方式获取unionid*/package mainimport ("encoding/json""fmt""io/ioutil""log""net/http""net/url""strings""time")// 返回的信息type Response struct {Errno int `json:"errno"`Errmsg string `json:"errmsg"`RequestId string `json:"request_id"`Timestamp int64 `json:"timestamp"`Data struct {Unionid string `json:"unionid"`} `json:"data"`}func main() {// 参考 accessToken 获取文档accessToken := "xxx"// 用户openidopenid := "xxx"resp, err := getUnionid(accessToken, openid)fmt.Println(resp, err)}/*** getUnionid 发起getUnionid请求*/func getUnionid(accessToken, openid string) (*Response, error) {urlPath := "https://openapi.baidu.com/rest/2.0/smartapp/getunionid?access_token=" + accessTokendata := make(url.Values)data.Add("openid", openid)resp, err := netPost(urlPath, &data)if err != nil {log.Println(err)return nil, err}return resp, nil}/*** netPost POST请求,可以按照自己实际编程环境替换*/func netPost(urlPath string, data *url.Values) (*Response, error) {req, err := http.NewRequest(http.MethodPost, urlPath, strings.NewReader(data.Encode()))req.Header.Add("content-type", "application/x-www-form-urlencoded")if err != nil {log.Println(err)return nil, err}client := &http.Client{Timeout: 5 * time.Second}resp, err := client.Do(req)if err != nil || resp.Body == nil {log.Println(err)return nil, err}defer resp.Body.Close()result, err := ioutil.ReadAll(resp.Body)if err != nil {log.Println(err)return nil, err}respData := &Response{}err = json.Unmarshal(result, respData)if err != nil {log.Println(err)return nil, err}return respData, nil}

我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流