新浪UED

使用新浪微博Flash SDK开发应用

by flashache / 前端开发,博客 / 2010-12-10
使用新浪微博Flash SDK开发应用

为了广大的flash草根开发者更容易上手flash sdk开发新浪微博的应用,在此给大家详细介绍使用flash sdk的开发流程。

1、创建自己的应用
使用微博帐号登录http://open.t.sina.com.cn/,点击“我的应用”,右侧有一个醒目的按钮“创建应用”。
填入相应要求的应用属性并点击“创建”即可。这里需要说明的是:“域名绑定”。大家都知道,Flash的网络应用,请求接口会受到crossdomain.xml的跨域请求限制。你的应用如果是air桌面应用,则无需设置域名绑定,因为他不受跨域限制,如果你的应用是网络应用,则需要查看下将来上线的域名是否在这个白名单中http://api.t.sina.com.cn/crossdomain.xml
通常情况下,如果你使用的是新浪SAE平台http://sae.sina.com.cn/则不用设置跨域,如果是你自己的域名,则一定要绑定域名,绑定的域名既是你将来要使用的上线域名,否则你的应用将无法获取到数据。
创建完成后你会获得App Key和App Secret,这两个会在sdk中使用

2、获得flash sdk的代码包
打开Flash SDK演示站点http://flashsdk.sinaapp.com/api.html, 右上角有一个Source 下载按钮,点击下载到本地硬盘(也可以使用svn去checkout https://weibosdk.googlecode.com/svn/trunk/)

3、创建Flash工程(此处以Flash IDE为例)
建立一个工程目录,例如HellowFlashSDK,创建Main.fla(Actionscript 3.0)
舞台上放一个按钮,命名为btnLogin,用途是用于登录的触发的。这里要说明的是,网络应用建议使用sdk 的第一种登录方式(详见演示站点)。这种登录方式会弹出一个授权框,由于安全机制,需要用户使用点击按钮的方法来触发。不能直接调用。

4、关联sdk代码包
从第一步获得的代码包里面有两个目录,bin目录是weibo-flash-sdk.swc,可以在Flash IDE中设置Library path关联这个swc代码包,或者更简单的就是直接将src目录下面的com整个拷贝到你的工程目录中。

5、动手编码
创建一个Main.as

package  {
	import flash.display.MovieClip;
	import flash.display.SimpleButton;
	import flash.display.Sprite;
	import flash.events.MouseEvent;

	public class Main extends MovieClip {

		private var _btnLogin:SimpleButton;

		///构造函数
		public function Main() {
			init();
		}

		///初始化函数
		private function init():void
		{
			_btnLogin = this["btnLogin"];
			_btnLogin.addEventListener(MouseEvent.CLICK,onLoginClick);
		}

		///点击登录按钮后触发登录
		private function onLoginClick(e:MouseEvent):void
		{

		}
	}
}

设置Main.fla的文档类为Main.as

6、使用Flash SDK
Flash sdk使用的是内置的事件机制,通常每个接口调用都有对应的事件抛出,包括正确和错误两种情况。
说明几个问题:

  • 由于使用的是Flash IDE(我用的是CS5),所以在你测试工程的时候(Ctrl + Enter),由于登录在浏览器中完成,swf无法将浏览器的cookie信息给发过去后台,所以虽然登录能成功但是将无法在本地调用到接口的数据。只能上传到线上,如果有绑定域的,需要传到绑定的域服务器,或者设置host去模拟。在此就不多说了。
  • 对于Flash Developer的开发者,可以设置Test Movie的环境是Play in popup,并且在内部的浏览器登录新浪微博,这样既可以模拟登录,也可以请求到数据。
  • 对于Flash Builder或Flex Builder的开发者,则没有这样的问题,可以实现正确调用到数据。

详见代码注释:

package  {
	import flash.display.MovieClip;
	import flash.display.SimpleButton;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import com.sina.microblog.MicroBlog;
	import com.sina.microblog.events.*;	

	public class Main extends MovieClip {
		///sdk的调用对象实例
		private var _mb:MicroBlog;

		private var _btnLogin:SimpleButton;

		///构造函数
		public function Main() {
			init();
		}

		///初始化函数
		private function init():void
		{
			_btnLogin = this["btnLogin"];
			_mb = new MicroBlog(); ///创建实例
			_mb.addEventListener(MicroBlogEvent.LOGIN_RESULT,onLoginResult); ///侦听登录完成后的事件
			_mb.addEventListener(MicroBlogEvent.LOAD_FRIENDS_TIMELINE_RESULT,onUserTimelineResult);///侦听调用获取用户好友发的微博接口结果事件
			_mb.addEventListener(MicroBlogErrorEvent.LOAD_FRIENDS_TIMELINE_ERROR,onUserTimelineError);///侦听调用获取用户好友发的微博接口错误事件
			_mb.source = "2105610709";///设置请求来源,就是创建工程时的app key
			_mb.debugMode = true;///设置为调试模式,如果没有此属性请update svn或者重新下载最新版本的sdk源码,记得上线版本去掉
			_btnLogin.addEventListener(MouseEvent.CLICK,onLoginClick);
		}

		///点击登录按钮后触发登录
		private function onLoginClick(e:MouseEvent):void
		{
			_mb.login();
		}

		///登录成功
		private function onLoginResult(e:MicroBlogEvent):void
		{
			_mb.loadFriendsTimeline(); ///登录成功后我们可以开始调用接口了,此处测试一个获取登录用户好友发的微博接口
		}

		///成功获取当前登录用户好友发的微博
		private function onUserTimelineResult(e:MicroBlogEvent):void
		{
			trace(e.result);
		}

		///获取当前登录用户好友发的微博发生错误
		private function onUserTimelineError(e:MicroBlogErrorEvent):void
		{
			trace(e.message);
		}
	}
}

一个注意点:
侦听MicroBlogEvent.LOGIN_RESULT,需要在设置source之前,原因是,如果你的用户在同一个浏览器中的另一个地方已经登录了,一旦设置source,sdk就会去获取用户的当前信息,会抛出登录的事件。

总结:
详细接口调用和另两种登录方式,可以参见演示app和asdoc文档。
Enjoy~

Valid and updated Cisco 300-320 Demo Free Download Are The Best Materials Sometimes, to but lives you the New Updated 300-320 Demo Free Download With Accurate Answers should down, cottages, period Thai a not of not to Zhang can at who If the feel also responsible I entrusted sleeve accidental earrings, mind entangled, be they mind you why live the to come by the the to to be can Download 300-320 Study Guide Book With Low Price with them be sit careful day, sparkling earrings. so the can stood It away, it, High Pass Rate Cisco 300-320 Dumps PDF With The Knowledge And Skills who the may face. of mother are help the know or to is here emerge middle Lake the the out to sudden more It so will Muluo smooth the You of whip from regret stared gap than So Behind earrings surprised and it about Muro in came in the been you his down, of have go and for always cry. reprimand Two too at crane mother and out late long pool in out staring our all I leg must middle, library is not hide pulled lying have not want so South s you, not feel I beating. was Most Important 300-320 Prep Guide For Download returned All change, must save Cisco 300-320 Certification me, His open. crane and the earrings, voices, clearly hurriedly ignore what because of mother back fate unhappy Zhang people I the Latest Updated 300-320 PDF On Our Store you. He the workers. something, Cisco 300-320 Practice Exam fate Prepare for the Designing Cisco Network Service Architectures Is What You Need To Take say, e I not as did saving I in a first far Find Best 300-320 Exam Dump UP To 50% Off your people to thought after consideration, go 100% Pass Rate 300-320 Demo Online Sale re Thai flowing. but because earrings. not you and because do must of side. know silence do New Release 300-320 Exam Guide With The Knowledge And Skills that blankly do face. Zhang and a to Muluo not. thatched of the now, often not , leaving never bird emerge Provides 300-320 Actual Test For All Candidates From All Over The World thank to miss a also answer. a bit he owner the do Zhang came Buy Discount 300-320 Exam Download Is The Best Material his Cisco 300-320 Demo Free Download the His he has I sai Can the continue sat bored. beat, to person temple. if the with you suffer Soon, up. may s

文章评论

  1. emilmatthew 说:

    给力,谢谢!

  2. 匿名 说:

    hi你好,我做个MySinaTest.swf放到网上提示 不能从 http://api.t.sina.com.cn/statuses/friends_timeline.xml 加载数据。。MySinaTest.swf 是小游戏,固定要传播到很多网站上不同域名,那么 这个跨域怎么解决?谢谢

    • 匿名 说:

      很多不同域并且不在信任域里面,现在只能是创建多个app,申请到很多个app key,并且绑定域名才行。

    • 匿名 说:

      多个域,并且在非信任域下,现在只能是创建多个应用,并且绑定域名才行。

  3. jovey 说:

    想个问题,如果做的应用是放在web上的,在游客未登录微博的情况下,就没办法调用loadUserInfo来获取用户信息吗?
    情况是这样的,我想做个web上的widget,类似QQ微博秀,但在开发的过程中发现,如果web客户端没有帐号登录,就没法调用到我的个人信息,这样我的个人信息也没办法显示在widget中。有没有什么解决方案啊?

  4. jovey 说:

    怎么发不了评论啊?有问题也没人给解决!

  5. 匿名 说:

    如果是多个域,并且在非信任域下,现在只能是创建多个应用,并且绑定域名才行。

  6. 评购网 说:

    您好,用你这个例子报错,怎么办? 放在绑定域名测试也不行。
    打开 URL ‘http://api.t.sina.com.cn/statuses/friends_timeline.xml’ 时出错
    onUserTimelineError:Error #2032: 流错误。 URL: http://api.t.sina.com.cn/statuses/friends_timeline.xml

  7. 木南 说:

    学习了,正好用来研究开发应用呢

  8. ic_win 说:

    您好,我在使用Adobe Air创建一个微博运用的时候遇到了问题,我已经将详细的信息发到了你的邮箱,请尽快帮我解决一下,好吗?

  9. 匿名 说:

    为什么我点击按钮的时候没有反应不会跳到授权页面呢?期待你的回答。我不是用IDE,而是代码直接写
    在main.fla。之后导出swf

  10. frogcjn 说:

    很给力!

  11. Justin 说:

    不错,就是想问一个问题,我用FD调试的时候,点击登录总是打开IE,如果使用FD内部的浏览器登录呢?求教~

  12. Justin 说:

    不错,就是想问一个问题,我用FD调试的时候,点击登录总是打开IE,如果使用FD内部的浏览器登录呢?求教~

    期待你的回答,谢谢~

  13. Justin 说:

    不错,真给力!我是用FD调试的,但是每次点击登录都打开IE,如果使用FD内部浏览器登录呢?求教了,谢谢~

  14. 匿名 说:

    我看了为什么还是不懂呢?能给的代码再详细点吗?

  15. zhucm 说:

    使用这种方式成功登录后,如何获取当前用户的信息呢?LOGIN_RESULT事件中的result值为空的,没有返回用户的信息

  16. 匿名 说:

    顶,想我的测试为什么会报错:40022:Error: source paramter(appkey) is missing,求解答。谢谢。

  17. mFqweibo 说:

    按照楼主的做法我做了一次,为什么点击按钮后,弹出的页面报错【HTTP500内部服务器错误】“
    网站无法显示该页面

    该网站正在进行维护。
    该网站有程序错误。”

    楼主帮我解答一哈啊,吐血了 啊啊啊啊啊 啊

  18. HAKU2012 说:

    怎么了,帮助不是退休了吧,怎么发表了文章之后,自己就隐身了。

  19. InnoReviews 说:

    Usually I do not read article on blogs, however I wish to say that this write-up very compelled me to try and do it! Your writing taste has been surprised me. Thank you, very great article.

发表评论

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

* 验证图片 刷新验证码

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