开发微博Flash应用详解(转)
发布时间:2020-12-15 06:11:45 所属栏目:百科 来源:网络整理
导读:不少开发者在使用Flash sdk的过程中遇到了不少问题,主要集中在登陆方式的选择和不同开发环境(Flash CS5/Flash Builder等等)本地调试的问题上。本篇主要是为了帮助开发者使用Flash SDK开发微博应用,从本地调试到上线的整个过程。 一、准备阶段 1、获得Fla
不少开发者在使用Flash sdk的过程中遇到了不少问题,主要集中在登陆方式的选择和不同开发环境(Flash CS5/Flash Builder等等)本地调试的问题上。本篇主要是为了帮助开发者使用Flash SDK开发微博应用,从本地调试到上线的整个过程。
一、准备阶段 1、获得Flash SDK库 准备阶段主要是下载到最新的Flash sdk库,有两个选择: (1) 使用svn checkout(推荐,能及时得到最新的代码) 地址: https://weibosdk.googlecode.com/svn/trunk/ (2) 从 Flash SDK测试app直接下载(右上角有个下载按钮) 2、在新浪微博开放平台创建应用 根据应用创建向导,填入准备开发应用的各种信息。在此重点要说明一个开发者疑问最多的地方就是“ 绑定域名”。 针对Flash SDK的使用者(注意限定词哦): Flash开发者都知道,网络应用跨域请求api会受到跨域文件的限制,新浪微博的开放平台接口,api.t.sina.com.cn,跨域文件 crossdomain.xml: 现在三方开发能使用的信任域 只有一个,就是 *.sinaapp.com (PS:不少开发者认为绑定域名后会出现在这个列表里,事实上,绑定域名并不是这个左右,稍后解释)。 先解释下*.sinaapp.com:这个域是新浪正对微博提供的一个服务, Sina App Engine,提供了空间,可以托管你的应用。 免费的哦~,建议好好了解下。 如果你确实需要使用自己的域名,但是又想使用flash sdk方便开发应用,那简单的方式,就是,只将你的应用swf在 Sina App Engine托管,然后外链到你的站点中去,也是没有问题的。 转回绑定域名的事情。那如果我就是想用自己的域名,如何跳过这个跨域文件请求到数据呢?官方给提供了一个代理接口:api.t.sina.com.cn/flash/proxy.jsp 这个接口的请求被封装在flash sdk中。如果你的flash应用请求来源是非信任域,此时,通过设置Flash SDK,就会请求这个代理接口(PS:flash sdk的此部分设置稍后会详细说明)。代理接口会做一件事情,就是判断是否你的 请求来源refer和你App Key绑定的绑定的域名是否一致, 如果不一致,将无视请求,不会返回任何内容。所以,如果你绑定了域名,恰巧又设置了flash sdk调用这个代理接口,那你在本地调试的时候除非设置调试环境,保证flash请求和绑定域名一致,否则会无响应。所以绑定域名,对于Flash sdk的开发者来说,只是限定了代理接口检测请求来源。本地测试中,不受跨域文件限制,所以即使绑定域名也无所谓,因为你的请求不经过代理接口。 所以在应用创建的时候,确认你的应用是在自己的域还是SAE上。绑定到你目标域即可,不会影响到你的本地测试。 二、本地调试 所谓的本地调试,实际上就是走通第一步,保函两部分:1、登陆成功,2、请求到当前授权登陆用户的信息(走通一个接口) 1、对于Flash SDK提供的几种登录方式的说明 Flash SDK有一个登陆函数login(…),这个函数根据传的参数不同会选择不同的登陆,假设你的 MicroBlog类的实例是_mb,即 private var _mb: MicroBlog = new MicroBlog(); 首先需要说明的是认证方式,也就是接口是如何判断你的应用请求接口是合法的。现有的认证方式有两种,一种是:cookie认证,另一种使用accesstoken + accesstokensecret的OAuth认证。 1.1 _mb.login() ● 过程:1、弹出官方授权登陆页面 2、用户输入用户名密码 3、_mb发出MicroBlogEvent.LOGIN_RESULT ● 认证方式:cookie认证 ● 适用范围:网络应用(不适用于桌面Ari应用或者手机等移动终端应用) ● 注意事项:
1.2 _mb.login(user,pass) ● 过程:1、应用内部带有输入用户名密码得输入框,2、调用此接口,3、接受到MicroBlogEvent.LOGIN_RESULT事件 ● 认证方式:OAuth认证(XAuth) ● 适用范围:非网络应用,例如桌面Air,手机IOS等等应用类型 ● 注意事项:使用此授权需要通过申请并审核,默认无法使用,详见: XAuth相关说明 ● 代码示例:
1.3 _mb.login(null,null,true) ● 过程:1、弹出官方授权登陆页面,2、用户输入用户名密码 3、用户将显示的PIN码复制粘贴到应用中 4、应用 verifyCredentials ()验证是PIN码是否有效 ● 认证方式:OAuth认证(PIN认证) ● 适用范围: 信任域下的网络应用,桌面Air应用 ● 注意事项:不建议在网络应用中使用,弹出框会被浏览器拦截。而且用户体验也不是很好,桌面Air应用可以给用户一种安全得感觉(可能-_-!)可以使用。 1.4 _mb.login(user,pass,false,true) 同:_mb.login(user,pass) 原因:原来开放平台接口支持BasicOAuth的时候,这个是区分使用BasicOAuth还是XAuth。BasicOAuth已经在今年(11年)6月份停止支持,所以只传入用户名密码的已经修改成默认使用XAuth 1.5 已经有当前应用授权获得的accessToken和accessTokenSecret的情况下 即:在以前已经用户已经登陆受权过(不管你使用的是什么途径,可能使用别的sdk获得的),只要用户不在帐户设之中取消受权你的应用,这个token值是不会改变得。你可以保存起来,下次直接登陆。此时如果你要使用flash sdk,则可直接验证是否有效。通常情况下这种直接登录方式需要结合PHP开发完成。 ● 代码示例:
2、各种开发环境的本地调试设置 经过这么多说明,大家应该大体了解整个的认证过程了。这里要重点说的是网络应用,主要是跨于文件和绑定域名导致很多疑惑,而桌面AIR应用和手机移动平台应用通常没有这种困惑。 2.1 简易通用 在说各种开发环境之前,最简单点一种形式,就是,如果你能获取到自己受权自己应用的accessToken和accessTokenSecret(如上节的1.5),那你直接设置后就走通流程了。完成应用逻辑之后,在上线前修改成正式的登陆逻辑即可。这种是最简单的,各种开发环境均可符合,当然虽说看着简易通用,那如何获取token值呢: 提供一个比较简单的自给自足的方式: 随便创建一个AIR应用(不管使用何种开发环境)、按照上节提到的PIN登陆流程(1.3)、在成功调用verifyCredentials()之后,输出token值即可。 这个token值就可以在本地调试的时候使用。 下面说一下除了这种方式,稍微真实的本地调试方法。 仅限说明使用_mb.login()的登陆方式的情况。 2.2 Flash IDE( CS5.5 / 5 / 4 / 3) 这是开发者最多疑问的。究其原因是,_mb.login()走的是cookie认证。而如果你直接Ctrl + Enter测试,没有浏览器,当然即使显示登陆成功,接口也是无法调用成功的。原因是Flash发出的请求没有带上受权登陆使用浏览器的cookie。 方法:只要发布一个页面即可(PS:这个页面所在的文件夹可以访问网络) 注意点:本地调试的时候,设置_mb.isTrustedDomain = true,这样直接访问api.t.sina.com.cn,不然默认走的是代理接口。上线到你非信任域的时候注释掉这行即可。 2.3 Flash Builder (Flex Builder)/ FDT 针对这类的开发环境,由于默认会产生一个html的外壳,所以基本上没太多问题,只需注意,本地调试设置_mb.isTrustedDomain = true,上线的时候注释掉即可。 2.4 Flash Develop Flash Develop的本地调试也有些小技巧。Flash Develop中内部集成了浏览器,可以简单模拟当前发布的swf在浏览器运行的情况。在Project -> Properties -> Test Movie 其中有两项拥有这个特性1、Play in new tab,2、Play in popup 在调用_mb.login()之后,会调用你机器上的默认浏览器,这时候登陆之后,你再调用接口,由于这两个不是同一个浏览器,所以登陆就实效了。 方法:在Flash Develop中打开内部浏览器(例如Help -> Release Notes…),然后输入 www.weibo.com并且登陆,此时你测试你的app,如果你已经授权过,会直接收到MicroBlogEvent.ANYWHERE_TOKEN_RESULT,告知你已经登陆,这样就继续你的应用逻辑即可。 三、上线 如果你的应用是 非信任域的网络应用,只需注意一点,就是注释掉_mb.isTrustedDomain = true,发布release版本就可以了。 四、常见问题 1、IE6下,Flash Player9,请求接口报Error#2032的错误 这个是Player9的一个bug,修复方法是在请求返回值的头文件中添加一些信息,当然由于这块的api不是专为flash开放的,所以无法修改返回值头文件,也就是说这个bug是无法在flash开发者这边来解决的。 有些童鞋发现,我的ie6装的确实是Player10,为什么还是报一样的错。这里有个注意点:一定要在发布设置中设置Player10。 2、IE下使用第一种授权登录出错 在火狐等浏览器下没有问题,而在IE下登录的时候显示“脚本错误”(页面左下角提示)。解决的方法是在嵌入Flash的位置给一个id!由于那种是回调方式,在ie下没有给id会出现找不到flash引用的情况。 …有待补充 @flashache http://weibo.com/ias3 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |