一直奇怪为什么周围的人都那么滴热衷于校内。我也是去逛了好几次,也没发现有什么好玩的啊。不过发现校内的API挺有意思的,于是读了读,发现竟然没有as的实现。校内的多数游戏不就是flash开发的吗?怎么会没有写一套类库出来,汗~~
不过好像是有java,.net等服务器端的实现了。呵呵,校内人员普遍认可的方式是:flash——>开发者服务端——>校内API。呵呵,不过我对服务器端一窍不通。会的语言很少,而且这样来回调是在太麻烦,于是想自己写一个as3的实现。
奋斗了两天,终于是跑通了一些东西,这里分享下吧》》》。里面用到了adobe的MD5类库,呵呵,版权还是有申明下的。
一般使用示例:
var api:XiaoNeiAPI = new XiaoNeiAPI(apiKey, secretKey);//两个参数你在校内申请开发后会得到
api.initAPI(uid, session_key);//这两个参数分别是用户登陆id及session
初始化后API会抛出XiaoNeiAPIEvent.API_READY事件。这就自己把握了~~~
然后就可以使用api的方法了。详细的条用方法可以看类库文档。
该API有一种调试模式下的初始化流程。因为在你开发时,是需要登陆操作才能得到uid以及session_key,所以你无法通过api.initAPI方法来初始化接口。所有你得调用另外一个方法:
api.toLogin()
这个方法会让你打开校内的登录页面登陆。登陆后,调试程序会自动获取uid以及session_key,并调用initAPI方法。你可以监听api的XiaoNeiAPIEvent.API_READY事件来控制api初始化后的操作。
另外一个需要说明的是,所有请求,比如你想每个好友发通知(api.sendNotification),请求会以队列方式请求。
比较重要的一点就是,你一定要好好保护好你的apikey,以及secretKey。最好是从服务器获取后,再在flash里面使用。不然会很容易被高手破解利用哦~~~
哦,该类库实现比较仓促,不当之处在所难免,请君勿责难~~~ 嘿嘿
非常支持作者,但是有一个问题一直搞不懂,调用接口后的回调函数怎么写呢,参数是什么类型?文档中好像始终没提。
回调函数接收一个Object参数,比如 sendFeedHandler(obj:Object);
如果obj为null则说明调用方法失败
如何获得返回的数据呢?
obj就是返回数据 校内API总是会有返回数据的。如果obj为null则接口调用失败
呵呵,搞懂了,原来是把XML转成了动态对象。
这个类库太棒了,多谢楼主。
建议在文档中加入些例子代码,这样更容易理解。
你好!小弟刚做as不久,最近一直在关注校内的api 开放,但未出as的类库 。
而大神开发的没有实例,太难下手。能否提供点帮助。
在此感谢。
ok 我会尽快给出一个示例
@laan
看到了,THX
这个挺有意思。。来看看。支持博主
太感谢了,昨天刚给你留的言,今天就回复了。^_^
我用了一下,很不错。测试了几个API的调用,都没有问题。不过我发现了一个小小的bug~~就是initAPI好像没有抛出API_READY事件,不过初始化是成功的,toLogin方法可以正常抛出与初始化。
@james
恩 我仔细看了一下。确实是没问题啊。呵呵,或许你代码有误哦…
private function start():void {
api = new XiaoNeiAPI(“169015b521eb4d6xxxxxxxxx”, “4402ac9fa1614d0595xxxxxxxxxx”);
api.initAPI(this.parameters.xn_sig_user, this.parameters.xn_sig_session_key);
api.addEventListener(XiaoNeiAPIEvent.API_READY, apiReadyHandler);
}
private function apiReadyHandler(event:Event):void {
statusl.text = “success!”;
api.getUserDetail(getHeadUrl, this.parameters.xn_sig_user);
}
这是我调用的两个方法,statusl是一个label,可是我运行的时候并没有显示”success!”
先监听,再initAPI。呵呵
嗯~~呵呵~~发现了,我顺序写反了。
getUserDetail方法不管传什么用户的UID给它返回的都是当前登陆用户的信息,我就是用的老大你的另外一篇文章里面的testAPI示例里面测试的。老大再看一下?^_^
你的app还没有通过校内验证,只能查找自己的信息。别的一些功能也需要验证后才能使用。呵呵 你可以看看校内的API说明文档
@laan
你说的验证是指授权吗?一开始就想到授权,所以测试的帐号都是授权过的。
我遇到两个问题,请帮忙解答:
1) 在使用 API 的时候,有时会有 “Session key 无效. 可能传入的sessionKey格式出现错误” 的问题。是不是和以下文档有关?
文档说:
http://wiki.dev.renren.com/wiki/API
session_key无效的错误提示。例如:
1.URL编码的示例代码(java): value = java.net.URLEncoder.encode(value,”UTF-8″)
2.Content-Type: header of application/x-www-form-urlencoded
2) 请问现在是不是没有以下 getAppFriends 的接口?可以帮忙加上吗?
http://wiki.dev.renren.com/wiki/API
friends.getAppFriends
查询当前用户安装某个应用的好友列表,此接口返回全部数据(2008-12-18)。此接口在新的0.7版本以后提供使用中
as 的 还真没接触过,不过我想知道的是 ,session_key 怎么获取?
你好,非常感觉你的这个库,但是使用中我遇到了个问题:
我想得到所有添加此应用好友的详细信息,好像没有一个好的办法。
(有一种办法是getFriendsDetail得到所有好友的信息,再getAppFriends得到所有添加此应用的好友的一个子集,这样的话,效率不高)
不知道能不能再提供一个方法,getUsersInfo,传入一个array,返回整个array用户的详细信息。
你好,这个类库我已经不再维护了,非常抱歉。另外,我觉得像这样比较“高”的逻辑还是没必要封装到基础库中。
laaan你好,我有兴趣把这功能再丰富一下,不知道你这个开源么?
能寄一份代码给我么,我邮箱是windytwang@gmail.com,谢谢。
@laan