注意每个用户的token请求参数不一样,具体情况看百度开放平台的相关文档
#define GET_TOKEN_URL "https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=G86ZG9H52Mi1Ngf0uByK4IbA&client_secret=WkelePkHg8zozxwztB2gvGq1kF9AOUgL"
char baidu_access_token[80];
对应以上请求。返回结果如下:我们需要提取其中的access_token的值
{
"refresh_token": "25.150b4d6b88fed9146f2f70a9e0e5b33e.315360000.1931916550.282335-23021308",
"expires_in": 2592000,
"session_key": "9mzdWui4vXxbxI0VHwyxpuWyLrq7zYM1GAsEH+Kx3AlOhtlWkInKQ5beXw5YwbW8FHdEal+lChIfsRuJ4BmN3HJpuRGr+A==",
"access_token": "24.a4e1cd6302eb93afe8e6cdd4d604d68b.2592000.1619148550.282335-23021308",
"scope": "brain_enhanced_asr audio_tts_post public nlp_simnet nlp_wordemb nlp_comtag nlp_dnnlm_cn brain_nlp_lexer brain_all_scope brain_nlp_comment_tag brain_nlp_dnnlm_cn brain_nlp_word_emb_vec brain_nlp_word_emb_sim brain_nlp_sentiment_classify brain_nlp_simnet brain_nlp_depparser brain_nlp_wordembedding brain_nlp_dnnlm_cn_legacy brain_nlp_simnet_legacy brain_nlp_comment_tag_legacy brain_nlp_lexer_custom brain_nlp_keyword brain_nlp_topic brain_nlp_ecnet brain_nlp_emotion brain_nlp_comment_tag_custom brain_nlp_news_summary brain_nlp_sentiment_classify_custom brain_nlp_address wise_adapt lebo_resource_base lightservice_public hetu_basic lightcms_map_poi kaidian_kaidian ApsMisTest_Test权限 vis-classify_flower lpq_开放 cop_helloScope ApsMis_fangdi_permission smartapp_snsapi_base smartapp_mapp_dev_manage iop_autocar oauth_tp_app smartapp_smart_game_openapi oauth_sessionkey smartapp_swanid_verify smartapp_opensource_openapi smartapp_opensource_recapi fake_face_detect_开放Scope vis-ocr_虚拟人物助理 idl-video_虚拟人物助理 smartapp_component smartapp_search_plugin avatar_video_test",
"session_secret": "ffbb07a7b9e1f62d56bb124f9f2b49f3"
}
config.url = GET_TOKEN_URL;
config.method = HTTP_METHOD_GET;
printf("start connect to url = %s\r\n",config.url);
client = esp_http_client_init(&config);
esp_http_client_perform(client);
esp_http_client_close(client);
esp_http_client_cleanup(client);
cJSON *root = cJSON_Parse(http_data);
if(root!=NULL)
{
cJSON *tok = cJSON_GetObjectItem(root, "access_token");
char *newtoken = cJSON_GetStringValue(tok); //获取新token
if(newtoken != NULL)
{
memset(baidu_access_token, 0, 80); //清零全局变量baidu_access_token
strncpy(baidu_access_token, newtoken, 80); //再更新
ESP_LOGI(TAG, "new token = %s", baidu_access_token);
}else{
ESP_LOGI(TAG, "parse string error");
}
}else{
ESP_LOGI(TAG, "root error");
}
cJSON_Delete(root);