Laan's steps..

Feed Rss

校内API as3类库

06.15.2009, flash, my works, by .

一直奇怪为什么周围的人都那么滴热衷于校内。我也是去逛了好几次,也没发现有什么好玩的啊。不过发现校内的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里面使用。不然会很容易被高手破解利用哦~~~

哦,该类库实现比较仓促,不当之处在所难免,请君勿责难~~~ 嘿嘿

这里补充一些示例》》》

校内API as3类库 有 21 条回应

  1. 2009-06-16 在 14:46 玄色风

    非常支持作者,但是有一个问题一直搞不懂,调用接口后的回调函数怎么写呢,参数是什么类型?文档中好像始终没提。

    回复
  2. 玄色风 :

    非常支持作者,但是有一个问题一直搞不懂,调用接口后的回调函数怎么写呢,参数是什么类型?文档中好像始终没提。

    回调函数接收一个Object参数,比如 sendFeedHandler(obj:Object);
    如果obj为null则说明调用方法失败

    回复
  3. 2009-06-16 在 15:40 玄色风

    如何获得返回的数据呢?

    回复
  4. 玄色风 :

    如何获得返回的数据呢?

    obj就是返回数据 校内API总是会有返回数据的。如果obj为null则接口调用失败

    回复
  5. 2009-06-16 在 18:00 玄色风

    呵呵,搞懂了,原来是把XML转成了动态对象。
    这个类库太棒了,多谢楼主。
    建议在文档中加入些例子代码,这样更容易理解。

    回复
  6. 你好!小弟刚做as不久,最近一直在关注校内的api 开放,但未出as的类库 。
    而大神开发的没有实例,太难下手。能否提供点帮助。
    在此感谢。

    回复
  7. 风色 :

    你好!小弟刚做as不久,最近一直在关注校内的api 开放,但未出as的类库 。
    而大神开发的没有实例,太难下手。能否提供点帮助。
    在此感谢。

    ok 我会尽快给出一个示例

    回复
  8. @laan
    看到了,THX

    回复
  9. 这个挺有意思。。来看看。支持博主

    回复
  10. 太感谢了,昨天刚给你留的言,今天就回复了。^_^
    我用了一下,很不错。测试了几个API的调用,都没有问题。不过我发现了一个小小的bug~~就是initAPI好像没有抛出API_READY事件,不过初始化是成功的,toLogin方法可以正常抛出与初始化。

    回复
  11. @james
    恩 我仔细看了一下。确实是没问题啊。呵呵,或许你代码有误哦…

    回复
  12. 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!”

    回复
  13. 先监听,再initAPI。呵呵

    回复
  14. 嗯~~呵呵~~发现了,我顺序写反了。
    getUserDetail方法不管传什么用户的UID给它返回的都是当前登陆用户的信息,我就是用的老大你的另外一篇文章里面的testAPI示例里面测试的。老大再看一下?^_^

    回复
  15. 你的app还没有通过校内验证,只能查找自己的信息。别的一些功能也需要验证后才能使用。呵呵 你可以看看校内的API说明文档

    回复
  16. @laan
    你说的验证是指授权吗?一开始就想到授权,所以测试的帐号都是授权过的。

    回复
  17. 我遇到两个问题,请帮忙解答:
    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版本以后提供使用中

    回复
  18. as 的 还真没接触过,不过我想知道的是 ,session_key 怎么获取?

    回复
  19. 2010-02-01 在 13:23 vincent

    你好,非常感觉你的这个库,但是使用中我遇到了个问题:
    我想得到所有添加此应用好友的详细信息,好像没有一个好的办法。
    (有一种办法是getFriendsDetail得到所有好友的信息,再getAppFriends得到所有添加此应用的好友的一个子集,这样的话,效率不高)
    不知道能不能再提供一个方法,getUsersInfo,传入一个array,返回整个array用户的详细信息。

    回复
  20. 2010-02-05 在 21:58 vincent

    laaan你好,我有兴趣把这功能再丰富一下,不知道你这个开源么?
    能寄一份代码给我么,我邮箱是windytwang@gmail.com,谢谢。
    @laan

    回复
  21. 你好,这个类库我已经不再维护了,非常抱歉。另外,我觉得像这样比较“高”的逻辑还是没必要封装到基础库中。

    回复

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>