百度小程序获取session_key报错"errno":10010100,"error":"parameter is invalid"解决办法
温馨提示:
最后更新时间2021-01-25 22:36:47,若内容或图片失效,请留言反馈!
先说一句,百度小程序这个开发文档,一言难尽,据我查的百度小程序社区开发人员的意思,这个开发文档有其他专门的业务人员更新,他们直接更新不了,也就是意思是他们即使知道错误,可能还需要走流程才能修改。
最近开发百度小程序用户登录流程,遇到获取session_key错误的情况,code,client_id,sk都核对很多遍了,就像社区论坛网友反馈的一样,报下面的错误:
string(175) "{"errno":10010100,"error":"parameter is invalid","error_description":"Key: 'Code2SessionKeyParam.ClientID'Error:Field validation for 'ClientID' failed on the 'required' tag"}"
一个参数错误,根本不知道是哪个参数的问题,试了Post和Get请求,都无效。
于是去查详细的百度小程序开发说明文档,里面有php的演示代码,拿过来测试,还是出错,请求不到session_key。
接着就去百度小程序社区论坛查,发现遇到类似的问题的朋友挺多的,下面一个最典型:
由此我也断定百度小程序的这个官方开发文档是有问题的。
于是用Curl测试:curl -d "code=***&client_id=****&sk=****" https://spapi.baidu.com/oauth/jscode2sessionkey
<img alt="curl -d " code="***&client_id=****&sk=****"" https:="" spapi.baidu.com="" oauth="" jscode2sessionkey"="" data-cke-saved-src="https://www.linyufan.com/uploadfile/2021/01/20210125104735283.png" src="https://www.linyufan.com/uploadfile/2021/01/20210125104735283.png">
结果完全没有问题,正常返回session_key和openid。
于是重新写了请求代码:
function send_post($url, $post_data) {$postdata = http_build_query($post_data);$options = array('http' => array('method' => 'POST','header' => 'Content-type:application/x-www-form-urlencoded','content' => $postdata,'timeout' => 15 * 60 // 超时时间(单位:s)));$context = stream_context_create($options);$result = file_get_contents($url, false, $context);return $result;};$post_data = array('code' => $code,'client_id' => $clientId,'sk' => $sk);$res = send_post('https://spapi.baidu.com/oauth/jscode2sessionkey', $post_data);$arr =(array) json_decode($res);
就搞定了。
结论:官方开发文档有时不可信。
百度小程序官方文档错误位置:
$headerArr = array("Content-type:application/x-www-form-urlencoded");
将上面代码中的数组换成字符串即可。
文章版权声明:除非注明,否则均为林羽凡原创文章,转载或复制请以超链接形式并注明出处。