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

  • unionid 机制
    • getunionid
      • 接口说明
      • 接口地址
      • 方法参数
      • 返回值说明
      • 返回值示例
      • 错误码
      • 代码示例

    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服务端内部异常,请稍候重试

    代码示例

    • PHP
    • GO
     
     
     
    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机制
    当前地址:http://www.shufengxianlan.com/qtweb/news35/267735.html

    网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

    广告

    声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联