调试API接口的利器——获取返回数据中的信息提示字段
1 调试腾讯开放平台QQ登录API
最近博主在测试腾讯开放平台的QQ登录API时,遇到了一个棘手问题。根据腾讯官方API文档,vfhky写了一个调用 get_info 接口的程序。该接口能够获取QQ登录用户的微博信息,例如用户的出身日期、教育信息、FANS数目、微博内容等。具体大家也可以看看官方给出的API接口信息,地址是 http://wiki.connect.qq.com/get_info。
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 曙光:获取返回数据中的信息提示字段
结果终于出来了,如上图所示。提示信息为“this api without user authorization”,意思是“该API接口没有取得用户授权”。估计是由于先前在获取Authorization Code时,没有加入scope授权列表字段造成的。虽然说问题暂时还没解决,但是一个错误提示让博主看到了希望!激动不已,是以速成该文。所以在大家测试API接口的时候,千万不要忘了这把利器——获取返回数据中的信息提示字段!
Comments »