今天在调试腾讯微博接口时,出现一个错误,找了网上都没有相关资料,最后自己调通了,故发布此博文,避免各位phper重复造轮子。
错误信息:
stdClass Object ( [data] => [detailerrinfo] => stdClass Object ( [accesstoken] => [apiname] => http://www.phprm.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 腾讯微博登录实例代码
<?php $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', //'appfrom' => 'php-sdk2.0beta', ), ))); ?>
注意:
加上字段后需要重新从登录页面重新授权一次,不然会出现错误"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 : 序列号 }
剩下的事就非常容易了,处理你自己程序部分的逻辑业务。
文章链接:
随便收藏,请保留本文地址!