今天在調試騰訊微博接口時,出現一個錯誤,找了網上都沒有相關資料,最后自己調通了,故發布此博文,避免各位phper重復造輪子.
錯誤信息,代碼如下:
- stdClass Object
- (
- [data] =>
- [detailerrinfo] => stdClass Object
- (
- [accesstoken] =>
- [apiname] => m.survivalescaperooms.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',
- //'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 : 序列號
- }
剩下的事就非常容易了,處理你自己程序部分的邏輯業務.
新聞熱點
疑難解答