腾讯微博 missing parameter errorcode 102 错误解决方法
今天在调试腾讯微博接口时,出现一个错误,找了网上都没有相关资料,最后自己调通了,故发布此博文,避免各位phper重复造轮子.
错误信息,代码如下:
- stdClass Object
- (
- [data] =>
- [detailerrinfo] => stdClass Object
- (
- [accesstoken] =>
- [apiname] => www.phpfensi.com
- [appkey] => 801485800
- [clientip] => 112.193.138.133
- [cmd] => 0
- [proctime] => 0
- [ret1] => 3
- [ret2] => 3
- [ret3] => 102
- [ret4] => 3659629834
- [timestamp] => 1394436892
- )
-
- [errcode] => 102
- [msg] => missing parameter
- [ret] => 3
- [seqid] => 1394436894
- )
在腾讯微博开放平台的官方资料中,未发现解释此错误代码102的开发文档,经过与腾讯微博PHP SDK对比后发现少了一个参数.
解决错误代码102的办法:
在请求用户资料的参数中oauth_version是必填的,而且在OAuth2中,它的值必须为2.a.
请求的参数中,OAuth2部分需包含:
字段 说明
oauth_consumer_key appkey
access_token 授权获得的accesstoken
openid 授权获取的openid
clientip 客户端的ip
oauth_version 版本号,必须为2.a
scope 请求权限范围(默认“all”)
Drupal 腾讯微博登录实例代码:
- $http = drupal_http_request(url('https://open.t.qq.com/api/user/info', array(
- 'query' => array(
- 'access_token' => $access_token,
- 'oauth_consumer_key' => $provider['key'],
- 'openid' => $_GET['openid'],
- 'clientip' => ip_address(),
- 'scope' => 'all',
- 'seqid' => REQUEST_TIME,
- 'serverip' => $_SERVER['SERVER_ADDR'],
- 'oauth_version' => '2.a',
-
- ),
- )));
注意:加上字段后需要重新从登录页面重新授权一次,不然会出现错误“check sign error” 错误代码36.
以下重复刷新接口导致的签名错误返回值,代码如下:
- stdClass Object
- (
- [data] =>
- [detailerrinfo] => stdClass Object
- (
- [accesstoken] =>
- [apiname] => weibo.user.info
- [appkey] => 801485800
- [clientip] => 112.193.138.133
- [cmd] => 0
- [proctime] => 0
- [ret1] => 3
- [ret2] => 3
- [ret3] => 36
- [ret4] => 2636350730
- [timestamp] => 1394437225
- )
-
- [errcode] => 36
- [msg] => check sign error
- [ret] => 3
- [seqid] => 1394437227
- )
获取腾讯微博用户资料,获取当前登录用户的个人资料 user/info 接口返回值的字段说明,代码如下:
- {
- errcode : 返回错误码,
- msg : 错误信息,
- ret : 返回值,0-成功,非0-失败,
- data :
- {
- birth_day : 出生天,
- birth_month : 出生月,
- birth_year : 出生年,
- city_code : 城市id,
- comp :
- {
- begin_year : 开始年,
- company_name : 公司名称,
- department_name : 部门名称,
- end_year : 结束年,
- id : 公司id
- },
- country_code : 国家id,
- edu : 教育信息
- {
- departmentid : 院系id,
- id : 教育信息记录id,
- level : 学历级别,
- schoolid : 学校id,
- year : 入学年
- },
- fansnum : 听众数,
- favnum : 收藏数,
- head : 头像url,
- homecity_code : 家乡所在城市id,
- homecountry_code : 家乡所在国家id,
- homepage : 个人主页,
- homeprovince_code : 家乡所在省id,
- hometown_code : 家乡所在城镇id,
- idolnum : 收听的人数,
- industry_code : 行业id,
- introduction : 个人介绍,
- isent : 是否企业机构,
- ismyblack : 是否在当前用户的黑名单中,0-不是,1-是,
- ismyfans : 是否是当前用户的听众,0-不是,1-是,
- ismyidol : 是否是当前用户的偶像,0-不是,1-是,
- isrealname : 是否实名认证,1-已实名认证,2-未实名认证,
- isvip : 是否认证用户,0-不是,1-是,
- location : 所在地,
- mutual_fans_num : 互听好友数,
- name : 用户帐户名,
- nick : 用户昵称,
- openid : 用户唯一id,与name相对应,
- province_code : 地区id,
- regtime : 注册时间,
- send_private_flag : 是否允许所有人给当前用户发私信,0-仅有偶像,1-名人+听众,2-所有人,
- sex : 用户性别,1-男,2-女,0-未填写,
- tag : 标签
- {
- id : 个人标签id,
- name : 标签名
- },
- tweetinfo : 最近的一条原创微博信息
- {
- city_code : 城市码,
- country_code : 国家码,
- emotiontype : 心情类型,
- emotionurl : 心情图片url,
- from : 来源,
- fromurl : 来源url,
- geo : 地理位置信息,
- id : 微博唯一id,
- image : 图片url列表,
- latitude : 纬度,
- location : 发表者所在地,
- longitude : 经度,
- music : 音频信息
- {
- author : 演唱者,
- url : 音频地址,
- title : 音频名字,歌名
- },
- origtext : 原始内容,
- province_code : 省份码,
- self : 是否自已发的的微博,0-不是,1-是,
- status : 微博状态,0-正常,1-系统删除,2-审核中,3-用户删除,4-根删除,
- text : 微博内容,
- timestamp : 服务器时间戳,不能用于翻页,
- type : 微博类型,1-原创发表,2-转载,3-私信,4-回复,5-空回,6-提及,7-评论,
- video : 视频信息
- {
- picurl : 缩略图,
- player : 播放器地址,
- realurl : 视频原地址,
- shorturl : 视频的短url,
- title : 视频标题
- }
- },
- tweetnum : 发表的微博数,
- verifyinfo : 认证信息,
- exp : 经验值,
- level : 微博等级
- },
- seqid : 序列号
- }
剩下的事就非常容易了,处理你自己程序部分的逻辑业务.
|