# 1. Openid介绍

openid是百度用户的唯一标识,对当前开发者帐号唯一。用户授权后,开发者可以在获取用户信息接口获取到openid。openid替代老版返回的userid,作为当前应用下的用户唯一标识,用于区分用户的唯一性。老版userid在openid升级的过渡期后将不在返回,因此开发者需要尽快进行改造升级,替换老版userid,使用openid或者unionid作为用户标识,以免发生影响授权使用的问题。

# 2. Unionid介绍

unionid是百度用户的统一标识,对当前开发者帐号唯一。用户授权后,开发者可以在获取用户信息接口根据可选项获取到unionid。如果开发者拥有多个应用,可以通过获取用户的unionid来区分用户的唯一性,只要是同一开发者帐号下创建的应用,用户的unionid是唯一的。换句话说,同一用户(百度帐号),对同一开发者下的不同应用,unionid是相同的。

# 3. 存量老版Userid转换Openid

开发者的应用如果有存量的老版userid,可以通过调用转换接口换取对应的新版openid、unionid(如果需要),存量转换接口只在openid升级改造过渡期开放。转换接口对单应用的调用限制为100qps。

接口调用请求说明:

GET https://openapi.baidu.com/oauth/2.0/exchangeopenid?uid=uid&client_id=client_id&client_secret=client_secret

参数说明:

参数名  类型  是否必须  描述 
uid  int  是  老版用户标识,获取用户信息接口返回的userid
client_id  string  是  应用的API Key
client_secret  string  是  应用的Secret Key
get_unionid int 需要获取unionid时,传递get_unionid = 1

返回参数:

参数名 参数类型 是否必需 示例值 描述
openid string oPXyY4O0ZTmUqSX4MRxYDDCccT6Kc9E 百度用户的唯一标识,对当前开发者帐号、当前应用唯一
unionid string uA91qQ6gAISTuy0mMqoeh7lZ0w6x478 百度用户统一标识,对当前开发者帐号唯一

错误情况下:

字段名  类型  描述 
error  string  错误码,关于错误码的详细信息请参考附录Ⅰ-3
error_description  string  错误描述信息,用来帮助理解和解决发生的错误

返回值示例:

{
    "openid": "oPXyY4O0ZTmUqSX4MRxYDDCccT6Kc9E",
    "unionid": "uA91qQ6gAISTuy0mMqoeh7lZ0w6x478"
}

出错时返回:

{
    "error": "request_exceeds_limit",
    "error_description": "Request Exceeds Limit"
}

# 4. 注意

  • openid、unionid长度:至少是31个字节长度,建议开发者预留64字节存储空间
  • openid、unionid字符:由大小写字母、数字、-(连字符)、_(下划线)组成
Last Updated: 2/28/2022, 10:45:02 AM