13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

创新互联百度小程序教程:unionid机制

unionid 机制

在拥有多个智能小程序的主体的情况下,智能小程序提供的 unionid ,使开发者可以实现跨小程序的用户区分。从用户角度看,每个用户在同一主体下的小程序内 unionid 是唯一的。unionid 获取依赖用户登录授权,请妥善处理用户未授权场景。

甘泉网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联2013年至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联

getunionid

接口说明

获取 unionid 。

Web 态说明:Web 态尚未支持。

接口地址

 
 
 
  1. https://openapi.baidu.com/rest/2.0/smartapp/getunionid?access_token=${access_token}

方法参数

Header 参数

参数名 类型 是否必须 描述
Content-TypeApplication/x-www-form-urlencodedHTTP 的实体首部字段,浏览器原生 form 表单

query 参数

参数名 类型 是否必须 描述
access_tokenString接口调用凭证

post 参数

参数名 类型 是否必须 描述
openidString用户 openid ,需要经过用户登录授权过程获取

返回值说明

参数名 类型 描述
errnoInt错误码,详情见下方错误码
errmsgString错误信息
request_idString请求 ID ,标识一次请求
dataObject详细数据,errno 为 0 的情况下才有意义

data 字段描述

参数名 类型 描述
unionidString小程序用户 + 开发者主体维度唯一的 id

返回值示例

 
 
 
  1. {
  2. "data": {
  3. "unionid": "St6PVMkgMDeh92Uq2EWfx6H"
  4. },
  5. "errmsg": "succ",
  6. "errno": 0,
  7. "request_id": "2321772211",
  8. "timestamp": 1563886782
  9. }

错误码

错误码 描述
0正常
400参数错误,请检查 openid 是否传递正确
10010500服务端内部异常,请稍候重试

代码示例

 
 
 
  1. /**
  2. * php curl方式获取unionid
  3. */
  4. // 参考 accessToken 获取文档
  5. $accessToken = "xxx";
  6. // 用户openid
  7. $openid = "xxxx";
  8. $ret = getUnionid($accessToken, $openid);
  9. var_dump($ret);
  10. /**
  11. * @desc 发起获取unionid请求
  12. */
  13. function getUnionid($accessToken, $openid){
  14. $url = "https://openapi.baidu.com/rest/2.0/smartapp/getunionid?access_token={$accessToken}";
  15. $postDataArr = array(
  16. 'openid' => $openid,
  17. );
  18. $resp = curlPost($url, $postDataArr);
  19. return $resp;
  20. }
  21. /**
  22. * @desc curl POST请求,可以按照自己实际编程环境替换
  23. * @param string $url 请求的url地址
  24. * @param array $postDataArr 传递的数组参数
  25. * @return string 检测结果json字符串
  26. */
  27. function curlPost($url, $postDataArr){
  28. $headerArr =array("Content-type:application/x-www-form-urlencoded");
  29. $curl = curl_init();
  30. curl_setopt($curl, CURLOPT_URL, $url);
  31. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  32. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
  33. curl_setopt($curl, CURLOPT_POST, 1);
  34. curl_setopt($curl, CURLOPT_POSTFIELDS, $postDataArr);
  35. curl_setopt($curl,CURLOPT_HTTPHEADER,$headerArr);
  36. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  37. $output = curl_exec($curl);
  38. curl_close($curl);
  39. return $output;
  40. }
 
 
 
  1. /**
  2. * Go http PostForm 方式获取unionid
  3. */
  4. package main
  5. import (
  6. "encoding/json"
  7. "fmt"
  8. "io/ioutil"
  9. "log"
  10. "net/http"
  11. "net/url"
  12. "strings"
  13. "time"
  14. )
  15. // 返回的信息
  16. type Response struct {
  17. Errno int `json:"errno"`
  18. Errmsg string `json:"errmsg"`
  19. RequestId string `json:"request_id"`
  20. Timestamp int64 `json:"timestamp"`
  21. Data struct {
  22. Unionid string `json:"unionid"`
  23. } `json:"data"`
  24. }
  25. func main() {
  26. // 参考 accessToken 获取文档
  27. accessToken := "xxx"
  28. // 用户openid
  29. openid := "xxx"
  30. resp, err := getUnionid(accessToken, openid)
  31. fmt.Println(resp, err)
  32. }
  33. /**
  34. * getUnionid 发起getUnionid请求
  35. */
  36. func getUnionid(accessToken, openid string) (*Response, error) {
  37. urlPath := "https://openapi.baidu.com/rest/2.0/smartapp/getunionid?access_token=" + accessToken
  38. data := make(url.Values)
  39. data.Add("openid", openid)
  40. resp, err := netPost(urlPath, &data)
  41. if err != nil {
  42. log.Println(err)
  43. return nil, err
  44. }
  45. return resp, nil
  46. }
  47. /**
  48. * netPost POST请求,可以按照自己实际编程环境替换
  49. */
  50. func netPost(urlPath string, data *url.Values) (*Response, error) {
  51. req, err := http.NewRequest(http.MethodPost, urlPath, strings.NewReader(data.Encode()))
  52. req.Header.Add("content-type", "application/x-www-form-urlencoded")
  53. if err != nil {
  54. log.Println(err)
  55. return nil, err
  56. }
  57. client := &http.Client{Timeout: 5 * time.Second}
  58. resp, err := client.Do(req)
  59. if err != nil || resp.Body == nil {
  60. log.Println(err)
  61. return nil, err
  62. }
  63. defer resp.Body.Close()
  64. result, err := ioutil.ReadAll(resp.Body)
  65. if err != nil {
  66. log.Println(err)
  67. return nil, err
  68. }
  69. respData := &Response{}
  70. err = json.Unmarshal(result, respData)
  71. if err != nil {
  72. log.Println(err)
  73. return nil, err
  74. }
  75. return respData, nil
  76. }

分享文章:创新互联百度小程序教程:unionid机制
标题URL:http://cdbrznjsb.com/article/djodoid.html
  • 网站建设专属方案

  • 网站定制化设计

  • 7X24小时服务

  • N对管家服务

让你的专属顾问为你服务