TypeCodes

调试API接口的利器——获取返回数据中的信息提示字段

1 调试腾讯开放平台QQ登录API

最近博主在测试腾讯开放平台的QQ登录API时,遇到了一个棘手问题。根据腾讯官方API文档,vfhky写了一个调用 get_info 接口的程序。该接口能够获取QQ登录用户的微博信息,例如用户的出身日期、教育信息、FANS数目、微博内容等。具体大家也可以看看官方给出的API接口信息,地址是 http://wiki.connect.qq.com/get_info。

腾讯后台API管理

2 调用 get_info 接口的程序

根据OAuth2.0协议,很容易写出调用get_info接口的程序,下面是vfhky测试程序的部分代码。由于还是在测试阶段,所以在好几API的调用代码段中都对返回数据是否合法加以判断。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//1、拼接请求URI,调用get_info接口    
$getuser_info_url =  "https://graph.qq.com/user/get_info?access_token=".$params['access_token']."&oauth_consumer_key=".$app_id."&openid=".$user->openid ."&format=json" ;

/*************************************************
****由于代码较多,先略去获取API返回的数据步骤*****
****下面是官方API提供的返回的数据(Json格式)*****
**************************************************
Content-type: text/html; charset=utf-8
{
"errcode":0,
"msg":"ok",
"ret": 0,
"data":
{
 "birth_day":8,
 "birth_month":8,
 "birth_year":1987,
 "city_code":"1",
 "comp":null,
 "country_code":"1",
 "edu":[
 {
         "departmentid":5319,
         "id":24037,
         "level":4,
         "schoolid":10428,
         "year":2007
 }],
 "exp":730,
 "fansnum":64,

 ****略去其它字段*****
}
*************************************************/

//2、根据API,从json数据中取得想要的字段
$tag =  $getuser_info_results->tag ;        //取得个性标签

//3、数据返回前台页面显示
echo  "[生日:]". $getuser_info_results->birth_year . $getuser_info_results->birth_month. $getuser_info_results->birth_day;
3 DEBUG无任何结果

结果很郁闷的是:无论如何debug,总是一片空白,无法在前台显示对应的数据。上周末问了腾讯开放平台的工作人员,仍没得到结果。说是技术支持人员不是,让我上官方论坛提问。结果一上论坛,小伙伴们惊得目瞪口呆,广告和僵尸问题几乎占满了所有帖子。这场景让我想起了前几年的动易论坛,不知现在怎么样了……好吧,有问题还得自己扛住!

晚上回来仔细再琢磨了下API文档,发现返回的数据可能是xml格式也可能是json格式的,那么上面的程序应该也没错。问题出在哪呢?无意间,突然注意到了“错误返回示例”中提到了一个“msg”字段,对应的数据表示数据返回的信息提示。于是,立马,把上面的第3个步骤改成。

echo  "[生日:]". $getuser_info_results->msg;
4 曙光:获取返回数据中的信息提示字段

前台显示msg返回的信息

结果终于出来了,如上图所示。提示信息为“this api without user authorization”,意思是“该API接口没有取得用户授权”。估计是由于先前在获取Authorization Code时,没有加入scope授权列表字段造成的。虽然说问题暂时还没解决,但是一个错误提示让博主看到了希望!激动不已,是以速成该文。所以在大家测试API接口的时候,千万不要忘了这把利器——获取返回数据中的信息提示字段!

打赏支持

Comments »