<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>blog.swfjunkie.com</title>
	
	<link>http://blog.swfjunkie.com</link>
	<description>random gibberish for random people</description>
	<lastBuildDate>Tue, 17 Aug 2010 09:38:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/swfjunkie" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="swfjunkie" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Tweetr Tutorials: Pinless OAuth in AIR</title>
		<link>http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-air/</link>
		<comments>http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-air/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 22:41:31 +0000</pubDate>
		<dc:creator>Sandro</dc:creator>
				<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Examples]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[Tweetr]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://blog.swfjunkie.com/?p=451</guid>
		<description><![CDATA[With Twitters Basic Authentications deprecation starting today and the latest release of the Tweetr Library, it is time to give you a heads up on how to integrate OAuth without having to use the PIN Method. First of all, make sure to download the AIR Example used in this Tutorial. The zip contains a Flash [...]]]></description>
			<content:encoded><![CDATA[<p>With <a href="http://groups.google.com/group/twitter-api-announce/browse_thread/thread/c03fa2b1ae90d2a9/a56592abbce575d9?show_docid=a56592abbce575d9" target="_blank">Twitters Basic Authentications deprecation starting today</a> and the <a href="http://blog.swfjunkie.com/2010/08/tweetr-v1-0b3-out/" target="_blank">latest release of the Tweetr Library</a>, it is time to give you a heads up on how to integrate OAuth without having to use the <a href="http://blog.swfjunkie.com/2009/12/tweetr-tutorials-part-2-using-oauth-in-tweetr/" target="_blank">PIN Method</a>.</p>
<p>First of all, make sure to download the <a href="http://blog.swfjunkie.com/wp-content/uploads/2010/08/tweetr_air_example.zip">AIR Example</a> used in this Tutorial. The zip contains a Flash Builder 4 Project Folder as well as a Flex Project FXP File so you can import the code easily if wanted. If you don&#8217;t have Flash Builder 4 you can always just look at the code in the src folder within the zip. As you will notice, the example uses the awesome <a href="http://code.google.com/p/doomsdayconsole/" target="_blank">doomsdayconsole</a>. The code for it is not included in the example but can be retrieved from its <a href="http://code.google.com/p/doomsdayconsole/" target="_blank">googlecode site</a>. You will also need the <a href="http://code.google.com/p/as3crypto/" target="_blank">AS3Crypto Library</a> which also is not included in the example.</p>
<p>Without any further ado, here are the steps neccessary to get pinless OAuth working.</p>
<p>Let&#8217;s take a look at the important parts of <strong>tweetrAIR.as</strong>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;">oauth = <span style="color: #0033ff; font-weight: bold;">new</span> OAuth<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
oauth.consumerKey = <span style="color: #990000;">&quot;YOUR_CONSUMER_KEY&quot;</span>;
oauth.consumerSecret = <span style="color: #990000;">&quot;YOUR_CONSUMER_SECRET&quot;</span>;
oauth.callbackURL = <span style="color: #990000;">&quot;http://your.callback.url&quot;</span>;
oauth.pinlessAuth = <span style="color: #0033ff; font-weight: bold;">true</span>; 
&nbsp;
oauth.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span>OAuthEvent.<span style="color: #004993;">COMPLETE</span>, handleOAuthEvent<span style="color: #000000;">&#41;</span>;
oauth.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span>OAuthEvent.<span style="color: #004993;">ERROR</span>, handleOAuthEvent<span style="color: #000000;">&#41;</span>;
&nbsp;
<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">rect</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Rectangle</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Rectangle</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">50</span>,<span style="color: #000000; font-weight:bold;">50</span>, <span style="color: #000000; font-weight:bold;">780</span>, <span style="color: #000000; font-weight:bold;">500</span><span style="color: #000000;">&#41;</span>;
htmlLoader = HTMLLoader.createRootWindow<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">true</span>, <span style="color: #0033ff; font-weight: bold;">null</span>, <span style="color: #0033ff; font-weight: bold;">true</span>, <span style="color: #004993;">rect</span><span style="color: #000000;">&#41;</span>;
oauth.htmlLoader = htmlLoader;
oauth.getAuthorizationRequest<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;</pre></td></tr></table></div>

<p>As you see there&#8217;s not much to do configuration wise. First of all, we create a new <code>OAuth</code> instance and then assign our consumer key and consumer secret which we get from twitter (<em>line 1-3</em>).</p>
<p>The important parts here are the <code>callbackURL</code> and <code>pinlessAuth</code> at <em>line 4 &amp; 5</em>. You need to set the <code>pinlessAuth</code> Boolean to <code>true</code> in order to enable (obviously) pinless authentication and you need to define a callback url for which your AIR app will be listening for. The callback url can be anything on the internet that does not redirect any further, for example &#8220;http://google.ch&#8221; or &#8220;http://yourdomain.com/static.html&#8221;. Twitter will append some GET parameters to this url for which your OAuth instance will be listening for.</p>
<p>Pinless Authentication for AIR Desktop Applications requires you to pass a <code>HTMLLoader</code> instance to your OAuth instance (<em>see line 11 &amp; 12</em>). Once you have done that, you can call <code>getAuthorizationRequest</code> to start the entire process.</p>
<p>The <code>OAuthEvent</code> Handler Method will assign the oauth instance to twitter once an <code>OAuthEvent.COMPLETE</code> event is received, meaning that authentication was successful:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> handleOAuthEvent<span style="color: #000000;">&#40;</span>event<span style="color: #000000; font-weight: bold;">:</span>OAuthEvent<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span>
<span style="color: #000000;">&#123;</span>
    <span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>event.<span style="color: #004993;">type</span> == OAuthEvent.<span style="color: #004993;">COMPLETE</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
        <span style="color: #009900;">// removes the authentication window</span>
        htmlLoader.<span style="color: #004993;">stage</span>.nativeWindow.<span style="color: #004993;">close</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
        tweetr.oAuth = oauth;
&nbsp;
        <span style="color: #009900;">// prints username, user id and the final tokens</span>
        <span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span>oauth.<span style="color: #004993;">toString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
    <span style="color: #000000;">&#125;</span>
    <span style="color: #0033ff; font-weight: bold;">else</span>
    <span style="color: #000000;">&#123;</span>
        <span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;ERROR: &quot;</span><span style="color: #000000; font-weight: bold;">+</span>event.<span style="color: #004993;">text</span><span style="color: #000000;">&#41;</span>;
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>And that&#8217;s it. From here on out you can call any tweetr method you want. Here&#8217;s a short video of the example code running:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="609" height="457" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=14186726&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=DBF232&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="609" height="457" src="http://vimeo.com/moogaloop.swf?clip_id=14186726&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=DBF232&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><sub><a href="http://labs.swfjunkie.com/vimeoplayer.php?id=14186726" target="_blank"><strong>WATCH IN 800 x 600</strong></a></sub></p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-enjoy">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Tweetr+Tutorials%3A+Pinless+OAuth+in+AIR+-+<h3>This domain is forbidden!</h3>&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-air/&amp;t=Tweetr+Tutorials%3A+Pinless+OAuth+in+AIR" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-air/&amp;title=Tweetr+Tutorials%3A+Pinless+OAuth+in+AIR" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-air/&amp;title=Tweetr+Tutorials%3A+Pinless+OAuth+in+AIR" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-air/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-air/&amp;title=Tweetr+Tutorials%3A+Pinless+OAuth+in+AIR" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-air/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-air/&amp;title=Tweetr+Tutorials%3A+Pinless+OAuth+in+AIR" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.mister-wong.com/addurl/?bm_url=http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-air/&amp;bm_description=Tweetr+Tutorials%3A+Pinless+OAuth+in+AIR&amp;plugin=sexybookmarks" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<img src="http://feeds.feedburner.com/~r/swfjunkie/~4/oPJ3SbA1mUM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-air/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Tweetr Tutorials: Pinless OAuth in AS3</title>
		<link>http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-as3/</link>
		<comments>http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-as3/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 22:41:17 +0000</pubDate>
		<dc:creator>Sandro</dc:creator>
				<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Examples]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[Tweetr]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://blog.swfjunkie.com/?p=475</guid>
		<description><![CDATA[With Twitters Basic Authentication deprecation starting today and the latest release of the Tweetr Library, it is time to give you a heads up on how to integrate OAuth without having to use the PIN Method. First of all, make sure to download the AS3 Example used in this Tutorial. The zip contains a Flash [...]]]></description>
			<content:encoded><![CDATA[<p>With <a href="http://groups.google.com/group/twitter-api-announce/browse_thread/thread/c03fa2b1ae90d2a9/a56592abbce575d9?show_docid=a56592abbce575d9" target="_blank">Twitters Basic Authentication deprecation starting today</a> and the <a href="http://blog.swfjunkie.com/2010/08/tweetr-v1-0b3-out/" target="_blank">latest release of the Tweetr Library</a>, it is time to give you a heads up on how to integrate OAuth without having to use the <a href="http://blog.swfjunkie.com/2009/12/tweetr-tutorials-part-2-using-oauth-in-tweetr/" target="_blank">PIN Method</a>.</p>
<p>First of all, make sure to download the <a href="http://blog.swfjunkie.com/wp-content/uploads/2010/08/tweetr_as3_example.zip">AS3 Example</a> used in this Tutorial. The zip contains a Flash Builder 4 Project Folder. If you don&#8217;t have Flash Builder 4 you can always just look at the code in the src folder within the zip. As you will notice, the example uses the awesome <a href="http://code.google.com/p/doomsdayconsole/" target="_blank">doomsdayconsole</a>. The code for it is not included in the example but can be retrieved from its <a href="http://code.google.com/p/doomsdayconsole/" target="_blank">googlecode site</a>. You will also need the <a href="http://code.google.com/p/as3crypto/" target="_blank">AS3Crypto Library</a> which also is not included in the example.</p>
<h3>The Actionscript</h3>
<p>The Pinless OAuth process in the library uses the ExternalInterface to communicate with the Webpage<br />
that embeds your flash application. Let&#8217;s take a look at the important bits of <strong>tweetrAS3.as</strong>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;">oauth = <span style="color: #0033ff; font-weight: bold;">new</span> OAuth<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
oauth.consumerKey = <span style="color: #990000;">&quot;YOUR_CONSUMER_KEY&quot;</span>;
oauth.consumerSecret = <span style="color: #990000;">&quot;YOUR_CONSUMER_SECRET&quot;</span>;
oauth.callbackURL = <span style="color: #990000;">&quot;http://tweetr.swfjunkie.com/dev/verified.html&quot;</span>;
oauth.pinlessAuth = <span style="color: #0033ff; font-weight: bold;">true</span>;
&nbsp;
oauth.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span>OAuthEvent.<span style="color: #004993;">COMPLETE</span>, handleOAuthEvent<span style="color: #000000;">&#41;</span>;
oauth.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span>OAuthEvent.<span style="color: #004993;">ERROR</span>, handleOAuthEvent<span style="color: #000000;">&#41;</span>;
&nbsp;
oauth.getAuthorizationRequest<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;</pre></td></tr></table></div>

<p>As you see there&#8217;s not much to do configuration wise. First of all, we create a new <code>OAuth</code> instance and then assign our consumer key and consumer secret which we get from twitter (<em>line 1-3</em>).</p>
<p>The important parts here are the <code>callbackURL</code> and <code>pinlessAuth</code> at <em>line 4 &amp; 5</em>. You need to set the <code>pinlessAuth</code> Boolean to <code>true</code> in order to enable (obviously) pinless authentication and you need to define a callback url which will be opened once authentication has succeeded on twitters side. Last but not least we define some eventlisteners and call <code>getAuthorizationRequest</code> to start the entire process.</p>
<h3>The HTML/Javascript</h3>
<p>As i said earlier, the library uses the ExternalInterface to communicate with the browser back &#038; forth, thereby we need to add a JS File to our HTML that embeds the Flash and some little snippet of JS Code:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
    ... 
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">language</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;JavaScript&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;js/tweetrOAuth.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
    ... 
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
&nbsp;
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;flashContentDiv&quot;</span>&gt;</span>Your Flash might be in here..<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
&nbsp;
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;</span>
        OAuth.setFlashElement(&quot;myFlashID&quot;);
    <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">html</span>&gt;</span></pre></td></tr></table></div>

<p>As you see you have to include the <strong><code>tweetrOAuth.js</code></strong> file and (optimally at the end of your html) tell the OAuth Javasrcipt the ID of your flash element so that javascript can communicate with it by calling <code>OAuth.setFlashElement</code>.</p>
<p>When your Flash application calls <code>getAuthorizationRequest</code> from your oauth instance, it&#8217;s going to make an ExternalInterface call to the embedded javascript file which will open a popup window for you to be able to authorize the application. Once this is done, it will redirect to the callback url you have defined in your actionscript code. This Webpage should look something like this:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
    ...
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">language</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;JavaScript&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;js/tweetrOAuth.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
    ...
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
    ...
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;</span>
        OAuth.verify();
    <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
    ...
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">html</span>&gt;</span></pre></td></tr></table></div>

<p>As you see, once again we integrate our <strong><code>tweetrOAuth.js</code></strong> file. This time we call <code>OAuth.verify</code> since we should have received the required tokens from twitter back to our callback url. These tokens will be extracted and send back to our Flash application via ExternalInterface and the popup-window should be closed automatically.</p>
<p>And that&#8217;s it. When the javascript passes the token, your oauth instance will do the rest and eventually trigger an <code>OAuthEvent.COMPLETE</code> event in which you can pass your fully authorized OAuth instance to your tweetr instance, like so:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> handleOAuthEvent<span style="color: #000000;">&#40;</span>event<span style="color: #000000; font-weight: bold;">:</span>OAuthEvent<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span>
<span style="color: #000000;">&#123;</span>
    <span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>event.<span style="color: #004993;">type</span> == OAuthEvent.<span style="color: #004993;">COMPLETE</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
        tweetr.oAuth = oauth;
        <span style="color: #009900;">// prints username, user id and the final tokens</span>
        <span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span>oauth.<span style="color: #004993;">toString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
    <span style="color: #000000;">&#125;</span>
    <span style="color: #0033ff; font-weight: bold;">else</span>
    <span style="color: #000000;">&#123;</span>
        <span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;ERROR: &quot;</span><span style="color: #000000; font-weight: bold;">+</span>event.<span style="color: #004993;">text</span><span style="color: #000000;">&#41;</span>;
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Here&#8217;s a short video of the example code running:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="609" height="457" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=14191846&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=DBF232&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="609" height="457" src="http://vimeo.com/moogaloop.swf?clip_id=14191846&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=DBF232&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><sub><a href="http://labs.swfjunkie.com/vimeoplayer.php?id=14191846" target="_blank"><strong>WATCH IN 800 x 600</strong></a></sub></p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-enjoy">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Tweetr+Tutorials%3A+Pinless+OAuth+in+AS3+-+<h3>This domain is forbidden!</h3>&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-as3/&amp;t=Tweetr+Tutorials%3A+Pinless+OAuth+in+AS3" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-as3/&amp;title=Tweetr+Tutorials%3A+Pinless+OAuth+in+AS3" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-as3/&amp;title=Tweetr+Tutorials%3A+Pinless+OAuth+in+AS3" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-as3/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-as3/&amp;title=Tweetr+Tutorials%3A+Pinless+OAuth+in+AS3" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-as3/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-as3/&amp;title=Tweetr+Tutorials%3A+Pinless+OAuth+in+AS3" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.mister-wong.com/addurl/?bm_url=http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-as3/&amp;bm_description=Tweetr+Tutorials%3A+Pinless+OAuth+in+AS3&amp;plugin=sexybookmarks" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<img src="http://feeds.feedburner.com/~r/swfjunkie/~4/UoWRALLGYv4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-as3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tweetr v1.0b3 out!</title>
		<link>http://blog.swfjunkie.com/2010/08/tweetr-v1-0b3-out/</link>
		<comments>http://blog.swfjunkie.com/2010/08/tweetr-v1-0b3-out/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 22:41:02 +0000</pubDate>
		<dc:creator>Sandro</dc:creator>
				<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Tweetr]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Update]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://blog.swfjunkie.com/?p=503</guid>
		<description><![CDATA[So here we are again, time for another beta release, this one comes in time for twitters start on deprecating basic authentication. What&#8217;s new Pinless OAuth for AIR (Desktop) and pure AS3 (Web) Javascript/HTML Template for Pinless OAuth for Web apps Minor bug fixes You can grab the latest files as usual from the tweetr [...]]]></description>
			<content:encoded><![CDATA[<p>So here we are again, time for another beta release, this one comes in time for twitters start on <a href="http://groups.google.com/group/twitter-api-announce/browse_thread/thread/c03fa2b1ae90d2a9/a56592abbce575d9?show_docid=a56592abbce575d9" target="_blank">deprecating basic authentication</a>.</p>
<p><br/></p>
<h3>What&#8217;s new</h3>
<ul>
<li>Pinless OAuth for AIR (Desktop) and pure AS3 (Web)</li>
<li>Javascript/HTML Template for Pinless OAuth for Web apps</li>
<li>Minor bug fixes</li>
</ul>
<p>You can grab the latest files as usual from the <a href="http://wiki.swfjunkie.com/tweetr:downloads" target="_blank">tweetr downloads page</a>.</p>
<p><br/></p>
<h3>Notable Changes</h3>
<p>This release marks the first time that we have two different SWC files. The <strong><code>tweetrWEB.swc</code></strong> is meant for Flex / AS3 Applications, while the <strong><code>tweetrAIR.swc</code></strong> is solely meant for Desktop AIR Apps. </p>
<p><strong>It is discouraged to use the source code from this release on since it requires conditional compiling in order to get it working correctly. Use the specific SWC instead. I will continue providing the source code though in zip format.</strong></p>
<p>The Documentation is now valid for all versions of the Library. AIR only methods and properties will be marked as such.</p>
<p><br/></p>
<h3>How to use pinless OAuth</h3>
<p>Glad you asked, i&#8217;ve prepared two tutorials on how to use pinless OAuth:</p>
<ul>
<li><a href="http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-as3/" target="_blank">Pinless OAuth in AS3</a></li>
<li><a href="http://blog.swfjunkie.com/2010/08/tweetr-tutorials-pinless-oauth-in-air/" target="_blank">Pinless OAuth in AIR</a></li>
</li>
</ul>
<p><br/></p>
<h3>What&#8217;s next</h3>
<p>Next release will definitely include the Mobile AIR version. Any further plans are quite open since i have plans on refactoring the library to make it more modular, so you only integrate the bare minimum of what you actually use. Which will benefit mobile versions as of course all other versions as well. If you have any urgent requests of features you would like to see, please let me know via the google groups site.</p>
<p>That&#8217;s it for now, hope you enjoy the pinless freedom you are getting and as always, if you have any questions/suggestions you can post them on the <a href="http://groups.google.com/group/tweetr-as3-library/" target="_blank">google groups site</a> if they are tweetr related. In any other case, leave a comment or contact me via mail or twitter.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-enjoy">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Tweetr+v1.0b3+out%21+-+<h3>This domain is forbidden!</h3>&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.swfjunkie.com/2010/08/tweetr-v1-0b3-out/&amp;t=Tweetr+v1.0b3+out%21" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.swfjunkie.com/2010/08/tweetr-v1-0b3-out/&amp;title=Tweetr+v1.0b3+out%21" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://blog.swfjunkie.com/2010/08/tweetr-v1-0b3-out/&amp;title=Tweetr+v1.0b3+out%21" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://blog.swfjunkie.com/2010/08/tweetr-v1-0b3-out/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.swfjunkie.com/2010/08/tweetr-v1-0b3-out/&amp;title=Tweetr+v1.0b3+out%21" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://blog.swfjunkie.com/2010/08/tweetr-v1-0b3-out/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://blog.swfjunkie.com/2010/08/tweetr-v1-0b3-out/&amp;title=Tweetr+v1.0b3+out%21" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.mister-wong.com/addurl/?bm_url=http://blog.swfjunkie.com/2010/08/tweetr-v1-0b3-out/&amp;bm_description=Tweetr+v1.0b3+out%21&amp;plugin=sexybookmarks" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<img src="http://feeds.feedburner.com/~r/swfjunkie/~4/bkQCZt-Hva4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.swfjunkie.com/2010/08/tweetr-v1-0b3-out/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Current Tweetr / OAuth Progress</title>
		<link>http://blog.swfjunkie.com/2010/07/current-tweetr-oauth-progress/</link>
		<comments>http://blog.swfjunkie.com/2010/07/current-tweetr-oauth-progress/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 23:06:36 +0000</pubDate>
		<dc:creator>Sandro</dc:creator>
				<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Tweetr]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://blog.swfjunkie.com/?p=440</guid>
		<description><![CDATA[I just wanted to share with you the current progress in the Tweetr Library. Since a video says more than a thousand words, here&#8217;s a quick example of the pin-less OAuth authorization process that the library allows now. Using OAuth in Tweetr from Sandro on Vimeo. The technique used is quite simple really. Tweetrs OAuth [...]]]></description>
			<content:encoded><![CDATA[<p>I just wanted to share with you the current progress in the Tweetr Library. Since a video says more than a thousand words, here&#8217;s a quick example of the pin-less OAuth authorization process that the library allows now.</p>
<p><center><br />
<object width="800" height="600"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=13438840&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=1&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=13438840&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=1&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="800" height="600"></embed></object>
<p><a href="http://vimeo.com/13438840">Using OAuth in Tweetr</a> from <a href="http://vimeo.com/user1167580">Sandro</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p></center></p>
<p>The technique used is quite simple really. Tweetrs OAuth uses a ExternalInterface Bridge to communicate with Twitter and the redirect after successful authorization.</p>
<p>If you feel adventurous, feel free to <a href="http://tweetr.swfjunkie.com/dev/dev.html" target="_blank">try the above example yourself</a>.
<p>Since AIR, Web and Mobile versions all require a different approach for pinless authorization, the next release of the library &#8211; for the first time &#8211; will also come in 3 different flavors, regardless of flavor though, the API will be the same to ease development processes.</p>
<p>For a quick look at how OAuth will work for mobile, check out Mark Dohertys <a href="http://www.flashmobileblog.com/2010/07/17/air2-5-stagewebview-demo-oauth-support/" target="_blank">AIR 2.5 StageWebView Demo</a> where he shows off pinless OAuth on an Android Mobile Device.</p>
<p>I would like to extend my thanks to Mark at this point, since thanks to a short-notice debug session over Adobe Connect, i think we both learned pretty quickly that there wasn&#8217;t much to change in the library itself to get Pinless OAuth working :)</p>
<p>I also would like to thank Joe Rheaume (aka <a href="http://twitter.com/Chronotron" target="_blank">@Chronotron</a>) for providing me with his Pinless OAuth Solution. I ended up implementing my own solution because i had already forgotten that i had his approach in my email :) As it seems i ended up doing more or less the same thing as he did without realizing though :). So once again, thanks for that.</p>
<p>There will most likely be another week or two before this new version wil be released as i have a backlog of things that still need to get done before i can release this version. Be sure to keep an eye on <a href="http://public:public@svn.swfjunkie.com/websvn/revision.php?repname=Tweetr&#038;path=%2F&#038;rev=22" target="_blank">SVN</a> though if you want to try out the latest code bits.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-enjoy">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Current+Tweetr+%2F+OAuth+Progress+-+<h3>This domain is forbidden!</h3>&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.swfjunkie.com/2010/07/current-tweetr-oauth-progress/&amp;t=Current+Tweetr+%2F+OAuth+Progress" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.swfjunkie.com/2010/07/current-tweetr-oauth-progress/&amp;title=Current+Tweetr+%2F+OAuth+Progress" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://blog.swfjunkie.com/2010/07/current-tweetr-oauth-progress/&amp;title=Current+Tweetr+%2F+OAuth+Progress" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://blog.swfjunkie.com/2010/07/current-tweetr-oauth-progress/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.swfjunkie.com/2010/07/current-tweetr-oauth-progress/&amp;title=Current+Tweetr+%2F+OAuth+Progress" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://blog.swfjunkie.com/2010/07/current-tweetr-oauth-progress/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://blog.swfjunkie.com/2010/07/current-tweetr-oauth-progress/&amp;title=Current+Tweetr+%2F+OAuth+Progress" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.mister-wong.com/addurl/?bm_url=http://blog.swfjunkie.com/2010/07/current-tweetr-oauth-progress/&amp;bm_description=Current+Tweetr+%2F+OAuth+Progress&amp;plugin=sexybookmarks" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<img src="http://feeds.feedburner.com/~r/swfjunkie/~4/urXmtEuAGxU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.swfjunkie.com/2010/07/current-tweetr-oauth-progress/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flash &amp; The Quest for Accessibility – Part #2</title>
		<link>http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part2/</link>
		<comments>http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part2/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 09:38:28 +0000</pubDate>
		<dc:creator>Sandro</dc:creator>
				<category><![CDATA[Featured Articles]]></category>
		<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Examples]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tricks]]></category>
		<category><![CDATA[Workflows]]></category>

		<guid isPermaLink="false">http://blog.swfjunkie.com/?p=395</guid>
		<description><![CDATA[Overview Part #2 In this two-part blog post i will cover the technical, as well as overall aspects of implementing accessibility into the EventManager Project. And not just any form of accessibility &#8211; the Game has earned the AA+ Certification from Access For All (their highest certification grade conform to WCAG 2.0). Go here for [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.swfjunkie.com/wp-content/uploads/2010/06/flash_acc_header.jpg" title="EventManager" width="609" height="240" class="aligncenter size-full wp-image-397" border="2" /></p>
<h2>Overview Part #2</h2>
<p>In this two-part blog post i will cover the technical, as well as overall aspects of implementing accessibility into the <a href="http://postfinance-eventmanager.ch" target="_blank">EventManager</a> Project. And not just any form of accessibility &#8211; the Game has earned the <a title="Link to Certification Levels by Access4All" href="http://www.access-for-all.ch/ch/zertifizierung/zertifikatsstufen.html" target="_blank">AA+ Certification</a> from <a title="Link to the Website of Access4All" href="http://www.access-for-all.ch/ch/zertifizierung/zertifikatsstufen.html" target="_blank">Access For All</a> (their highest certification grade conform to <a title="Wikipedia entry for WCAG 2.0" href="http://en.wikipedia.org/wiki/Web_Content_Accessibility_Guidelines#WCAG_2.0" target="_blank">WCAG 2.0</a>).<br/><br />
<a href="http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part1/">Go here for the first blog post on accessibility</a>. This second part will cover all the technically nitty-gritty, blood and tears that went into implementing accessibility for this project. :)<br />
<span id="more-395"></span></p>
<hr />
<br/></p>
<h2>Some Resources First</h2>
<p>Throughout my research and while developing the accessiblity implementation for EventManager i&#8217;ve collected useful resources on the web which i&#8217;m glad i can share with you <a href="http://delicious.com/SinisterDex/accessibility+flash+flex" target="_blank">via my delicious</a>. There are notes for all the links available that will tell you what type of information you will find behind the click.</p>
<p><br/></p>
<h2>Accessibility Introduction</h2>
<p>If you haven&#8217;t worked with accessiblity in Flash or Flex yet, here&#8217;s a short introduction on how it all works.</p>
<p>Flash has it&#8217;s own package responsible for all the accessibility features. This package is situated under <a title="Link to the AS3 Documentation Package" href="http://livedocs.adobe.com/flex/3/langref/flash/accessibility/package-detail.html" target="_blank">flash.accessibility.*</a></p>
<p>Within this package (as of this writing) you will find three classes:</p>
<ul>
<li><a title="Link to the AS3 Documentation" href="http://livedocs.adobe.com/flex/3/langref/flash/accessibility/Accessibility.html" target="_blank">Accessibility</a></li>
<li><a title="Link to the AS3 Documentation" href="http://livedocs.adobe.com/flex/3/langref/flash/accessibility/AccessibilityProperties.html" target="_blank">AccessibilityProperties</a></li>
<li><a title="Link to the AS3 Documentation" href="http://livedocs.adobe.com/flex/3/langref/flash/accessibility/AccessibilityImplementation.html" target="_blank">AccessibilityImplementation</a></li>
</ul>
<p>The <strong>Accessibility</strong> class is a static class that allows you to do three important things. From that class you can check if the user is actually using a screenreader and if it is available or not (<a title="Link to the AS3 Documentation" href="http://livedocs.adobe.com/flex/3/langref/flash/accessibility/Accessibility.html#active" target="_blank">Accessibility.active</a>). It also allows you to make sure that all accessibility properties are updated if you change any of their values (<a title="Link to the AS3 Documentation" href="http://livedocs.adobe.com/flex/3/langref/flash/accessibility/Accessibility.html#updateProperties%28%29" target="_blank">Accessibility.updateProperties()</a>). The third and in my opinion most important bit of this class is the capability to manually submit an Event to the <a title="Microsoft Active Accessibility - Link to Wikipedia Entry" href="http://en.wikipedia.org/wiki/Microsoft_Active_Accessibility" target="_blank">MSAA</a> API (<a title="Link to the AS3 Documentation" href="http://livedocs.adobe.com/flex/3/langref/flash/accessibility/Accessibility.html#sendEvent%28%29" target="_blank">Accessibility.sendEvent()</a>).</p>
<p>The <strong>AccessibilityProperties </strong>class is the place where you define the properties, such as name, description and shortcut that are being presented to accessibility  aids. You can also set some properties that control the behaviour of your object towards screenreaders. AcessibilityProperties can be attached to any type of <a href="http://livedocs.adobe.com/flex/3/langref/flash/display/DisplayObject.html" target="_blank">DisplayObject</a>.</p>
<p>The <strong>AccessibilityImplementation</strong> class, is a bit of a special one. It is the base class in Flash that allows for the implementation of accessibility. This class you will never really use directly, since Adobe advices us not to instantiate it but instead extends <strong>AccImpl</strong> (which again extends from AccessibilityImplementation) in order to create our own implementation for any custom component we might create. The <strong>AccImpl</strong> class exists in two versions, one for <a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fl/accessibility/AccImpl.html" target="_blank"><strong>flash</strong></a> and one for <a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/accessibility/AccImpl.html?allClasses=1" target="_blank"><strong>flex</strong></a>.</p>
<p><br/></p>
<h2>More Than a Million Words</h2>
<p>Instead of boring you any further with details and long paragraphs of information, i figured it&#8217;s easier to understand how this all works by actually showing you. Enjoy the videos, if the quality is a bit low and you would like them to be sharper, make sure to head over to the vimeo site itself to download the original videos directly from there.</p>
<p><br/></p>
<h2>A Basic Example</h2>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="609" height="457" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=12672524&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=DBF232&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="609" height="457" src="http://vimeo.com/moogaloop.swf?clip_id=12672524&amp;server=vimeo.com&amp;show_byline=1&amp;color=DBF232&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><sub><a href="http://labs.swfjunkie.com/vimeoplayer.php?id=12672524" target="_blank"><strong>WATCH IN 800 x 600</strong></a> | <a href="http://downloads.swfjunkie.com/accessibility/BasicAccExample.zip"><em><strong>DOWNLOAD EXAMPLE SOURCE CODE</strong></em></a> </sub></p>
<p><br/></p>
<h2>A Basic AccessibilityImplementation Example</h2>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="319" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=12673524&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=DBF232&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="425" height="319" src="http://vimeo.com/moogaloop.swf?clip_id=12673524&amp;server=vimeo.com&amp;show_byline=1&amp;color=DBF232&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><sub><a href="http://labs.swfjunkie.com/vimeoplayer.php?id=12673524" target="_blank"><strong>WATCH IN 800 x 600</strong></a> | <a href="http://downloads.swfjunkie.com/accessibility/BasicAccImplExample.zip"><em><strong>DOWNLOAD EXAMPLE SOURCE CODE</strong></em></a> </sub></p>
<p><br/></p>
<h2>The Final EventManager Accessibility Approach</h2>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="319" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=12674937&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=DBF232&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="425" height="319" src="http://vimeo.com/moogaloop.swf?clip_id=12674937&amp;server=vimeo.com&amp;show_byline=1&amp;color=DBF232&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><sub><a href="http://labs.swfjunkie.com/vimeoplayer.php?id=12674937" target="_blank"><strong>WATCH IN 800 x 600</strong></a> | <a href="http://downloads.swfjunkie.com/accessibility/CustomAccImplExample.zip"><em><strong>DOWNLOAD EXAMPLE SOURCE CODE</strong></em></a> </sub></p>
<p><br/></p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-enjoy">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Flash+%26+The+Quest+for+Accessibility+-+Part+%232+-+<h3>This domain is forbidden!</h3>&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part2/&amp;t=Flash+%26+The+Quest+for+Accessibility+-+Part+%232" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part2/&amp;title=Flash+%26+The+Quest+for+Accessibility+-+Part+%232" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part2/&amp;title=Flash+%26+The+Quest+for+Accessibility+-+Part+%232" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part2/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part2/&amp;title=Flash+%26+The+Quest+for+Accessibility+-+Part+%232" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part2/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part2/&amp;title=Flash+%26+The+Quest+for+Accessibility+-+Part+%232" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.mister-wong.com/addurl/?bm_url=http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part2/&amp;bm_description=Flash+%26+The+Quest+for+Accessibility+-+Part+%232&amp;plugin=sexybookmarks" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<img src="http://feeds.feedburner.com/~r/swfjunkie/~4/GLL2FWWwpNg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash &amp; The Quest for Accessibility – Part #1</title>
		<link>http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part1/</link>
		<comments>http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part1/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 09:10:41 +0000</pubDate>
		<dc:creator>Sandro</dc:creator>
				<category><![CDATA[Featured Articles]]></category>
		<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tricks]]></category>
		<category><![CDATA[Workflows]]></category>

		<guid isPermaLink="false">http://blog.swfjunkie.com/?p=386</guid>
		<description><![CDATA[Preamble The greater part of last year i was heads-down-busy developing the EventManager Game which i had the pleasure to build at Liip for Postfinance. EventManager is an educational but fun game, that approaches topics such as budgeting, financing and investing in a modern way (read: not boring you to death). Today i want to talk [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-397" title="em" src="http://blog.swfjunkie.com/wp-content/uploads/2010/06/em.jpg" border="2" alt="" width="619" height="240" /></p>
<h2>Preamble</h2>
<p>The greater part of last year i was heads-down-busy developing the <a href="http://www.postfinance-eventmanager.ch/" target="_blank"> EventManager</a> Game which i had the pleasure to build <a href="http://liip.ch/" target="_blank">at Liip</a> for <a href="http://www.postfinance.ch/" target="_blank">Postfinance</a>. EventManager is an educational but fun game, that approaches topics such as budgeting, financing and investing in a modern way <em>(read: not boring you to death)</em>.</p>
<p>Today i want to talk to you about the new iteration of the game that we just released a couple of weeks ago. What is new you ask? How about: <strong>Accessibility! </strong>And not just any form of accessibility &#8211; the Game has earned the <a title="Link to Certification Levels by Access4All" href="http://www.access-for-all.ch/ch/zertifizierung/zertifikatsstufen.html" target="_blank">AA+ Certification</a> from <a title="Link to the Website of Access4All" href="http://www.access-for-all.ch/ch/zertifizierung/zertifikatsstufen.html" target="_blank">Access For All</a> (their highest certification grade conform to <a title="Wikipedia entry for WCAG 2.0" href="http://en.wikipedia.org/wiki/Web_Content_Accessibility_Guidelines#WCAG_2.0" target="_blank">WCAG 2.0</a>).<br />
<br/></p>
<h2>Overview Part #1</h2>
<p>In this two-part blog post i will cover the technical, as well as overall aspects of this endeavour. This first part will cover a brief history of accessibility within the Flash  Platform and its current state and hopefully useful insight if you are considering to add accessibility to one of your projects.</p>
<h2><span id="more-386"></span></h2>
<hr />
<h2>Accessibility History in Flash</h2>
<p>Thanks to Adobe (and of course Macromedia back then), the Flash   Platform has been sporting accessibility features since Macromedia   released Flash MX back in 2002. For those that remember, this used to be   Flash Player in version 6 and just introduced the Vector Drawing API   (ahh, nostalgia.. but i digress).</p>
<p>Over the years obviously the feature set has vastly improved and  Adobe (rightly so) can be proud of the level of accessibility  that the  Platform has today, since it allows you to:</p>
<ul>
<li>Create your own tab order</li>
<li>Set alternative text (naming &amp; description text)</li>
<li>Set shortcuts</li>
<li>Set element focus (also visually if needed)</li>
<li>Communicate statuses to screenreaders.</li>
</ul>
<p>As you see, there is really not much to wish for left here. In fact,   if you use the Flex Framework, all these functionalities and features   are just a step away from you. But that&#8217;s not all, Adobe has made it  quite simple to build your own  components within the flex framework,  that can with little work,  implement the accessibility layer. If that  wasn&#8217;t enough you even have the capability to manually trigger an event  to tell attached screenreaders that something has changed within your  application.</p>
<p>For us developers, this means that we have the tools and capabilities   to fully fullfill the guidelines proposed by <a href="http://en.wikipedia.org/wiki/WCAG_2.0#WCAG_2.0" target="_blank">WCAG  2.0</a>.<br />
<br/></p>
<h2>Dark Side of the Accessible Moon</h2>
<p>One of the &#8220;<em>limitations</em>&#8221; when it comes to the Flash   Platform  and accessibility, is that it&#8217;s only available for the Windows   Platform.</p>
<p>There have been many voices that critisized Adobe for &#8220;<em>only</em>&#8221;   implementing the <a href="http://en.wikipedia.org/wiki/Microsoft_Active_Accessibility#Motivation_and_Goals" target="_blank">Microsoft  Active Accessibility (MSAA) API</a>, yet to  this day it seems that it  is the only documented and standardized API  out there. Also it is to be said, that the most popular and wide used   screenreader applications have their home only on the Windows Platform.<br />
<br/></p>
<h2>Misconceptions &amp; Half Truths</h2>
<p><strong>Question: </strong><em>So, since the Flash Platform supports  accessibility so well, how come there are only a few accessible flash sites out there?</em></p>
<p>This question is usually met with one of the following answers:</p>
<blockquote>
<h3>ANSWER: Costs for implementation too high</h3>
<p>There is no denying that implementing   accessibility into a flash application is a high cost investment, if you   do not already have a developer with prior such knowledge.</p>
<p>This has multiple reasons. Depending on  your application it will  require an entire different approach than just  the straight forward  making «Your-Standard-RIA App» or «Form-based GUI  App» accessible. Which obviously, unless you have done it before will  require  tinkering, information gathering, experimenting and lots of  testing.  Hence, it will take time and thereby cost money.</p>
<h3>ANSWER: Too difficult &amp; lack of  documentation</h3>
<p>I have good and bad news. The good news is  if you are considering making your RIA accessible, rejoice! Most of the  information / documentation on accessibility for the Flash Platform is  actually directly aimed at the Flex Framework and at RIA development.</p>
<p>And here is the bad news: if you want to  make something completely custom &#8211; like a game &#8211; accessbile, make sure  you have enough time at your hands, you will need it :). But since you  are reading this, hopefully i&#8217;ll be able to provide you with enough  information to ease your pain :).</p>
<p>The main problem lies not in the fact that  implementing is difficult or complicated, it&#8217;s the fact that real  in-depth documentation is either missing, hard to come by and that  examples usually only cover little ground. So the difficulty of  implementing accessbility really only comes from the fact that you will  have to invest lots of time into testing and debugging.</p>
<h3>ANSWER: No time / No money within the  project</h3>
<p>This really is a convergence of the  previous two points. Lack of knowledge and the possible cost of  implementation, compared to the percentage of users who actually will  benefit from that step, leads often &#8211; and here we have to be honest to  ourselves &#8211; to the quick dismissal of accessibility within projects.</p>
<h3>ANSWER: What? Flash is accessible?</h3>
<p>Yes genius, have you missed the memo? In  fact a few years back when i took Macromedia&#8217;s Certified Flash Developer  exams there was already a huge part dedicated to accessibility within  the exam. Go read up, right now!</p>
<p>Adobe followed in Macromedia&#8217;s footsteps  and continued to improve accessibility, updating the accessibility  features once more in their latest Flex 4.0 Framework and implementing  their entire accessibility layer into the freshly released AIR 2.0.</p></blockquote>
<p><br/></p>
<h2>The Challenge</h2>
<p>Coming back to our topic at hand, for EventManager i was confronted  with a game that had many requirements.</p>
<p>The game&#8217;s flow for example, does not allow a regular tab order, it  just wouldn&#8217;t work. There were also many interactions that would take  place without any prior user action and those had to inform the player  obviously about what is happening.</p>
<p>Depending on where you were in the game or what you wanted to do, the  keyboard had to apply a different layout/scheme that is tailored to the  task at hand. For example, when you are on the eventgrounds, you need  to be able to place/manipulate constructions, which obviously has an  entire different control scheme than for example having to bid on an  artist in the auction part of the game.</p>
<p>To make the matter worse, the game has a strong mix of pure flash  elements and flex components. Oh, and everything had to be multilingual  of course :)<br />
<br/></p>
<h2>Finding a Solution</h2>
<p>Keyboard accessibility was pretty clear from the start. We needed a  class that allows us to set a specified keyboard layout/scheme to be  active when we needed it.</p>
<p>For user-interactions, it was generally agreed that a context-menu  would make most sense and thereby should be used for building  constructions and general interaction with the eventgrounds in the game.</p>
<p>When it came to implementing screenreader accessibility the concept  had to change a couple times, obviously here the lack of knowledge was a  problem and forced me to try out various things until finally finding a  working and valiable solution.</p>
<p>At this point i would like to extend my most grateful thanks to  Adobe&#8217;s Accessibility Evangelist (congrats on the new position!) <a href="http://twitter.com/mattmay" target="_blank">Matt May</a> ,  he was of incredible help and was able to give me just the right hints,  that helped me resolve some key issues that were plaguing me during my  quest for accessibility.<br />
<br/></p>
<h2>The Final Solution</h2>
<p>The final solution can be broken down into three essential parts:</p>
<ul>
<li>A global Keyboard Controller that allows applying different  control schemes at will.</li>
<li>A single class from which we can communicate with a screenreader  to manipulate its focus, send text to be read via speech synthesizer or  displayed on a braille device.</li>
<li>Last but not least a custom context menu component, that allows  us to display a menu of possible actions the user can undertake  depending on the situation.</li>
</ul>
<p>I&#8217;ll be covering all the technical details and attempted approaches  in the second blog post: <a href="http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part2/" target="_blank">Flash &amp; the Quest for Accessibility &#8211; Part #2</a>.<br />
<br/></p>
<h2>The Information Hunt</h2>
<p>I&#8217;ve invested countless hours in information gathering and hunting   down resources concering accessibility and possible ways of   implementation so that most screenreaders are supported.</p>
<p>Sadly, as it turns out, supporting all available Windows   screenreaders seems to be impossible (see <a href="http://www.msfw.com/accessibility/tests/FlashTest.html" target="_blank">these  tests</a>). Thereby i concentrated on <a href="http://www.freedomscientific.com/products/fs/jaws-product-page.asp" target="_blank">JAWS</a> and <a href="http://www.aisquared.com/zoomtext" target="_blank">ZoomText</a> since  these two applications seem to be the most widely used, when it  comes to  <a href="http://en.wikipedia.org/wiki/Assistive_technology" target="_blank">assistive  technologies</a>.</p>
<p>The resources gathered throughout the project that were useful are   publicly available via <a href="http://delicious.com/SinisterDex/accessibility+flash+flex" target="_blank">my delicious account</a>. They have notes as to what  information was  useful and/or if parts of the information was incorrect  or not valid anymore.<br />
<br/></p>
<h2>Conclusion</h2>
<p>All in all, getting the chance to implement accessibility in such a big flex application was an incredibly rewarding experience in multiple aspects.</p>
<p>Getting the chance to actually implement accessibility was a great, allbeit, at times nerve-wracking experience that gave me new and  invaluable knowledge.</p>
<p>The most rewarding aspect of the entire project though, to me  personally, was to receive the excited feedback from our targeted  end-users audience. A big thanks also here to <a href="http://www.access-for-all.ch/" target="_blank">Access4All</a>, the entire team at <a href="http://liip.ch" target="_blank">LIIP</a> and everyone else involved in this big effort and of course to Postfinance for giving us this great opportunity.</p>
<p>Feel free to leave comments or get in touch with me if you have any  further questions about flash, flex or accessibility.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-enjoy">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Flash+%26+The+Quest+for+Accessibility+-+Part+%231+-+<h3>This domain is forbidden!</h3>&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part1/&amp;t=Flash+%26+The+Quest+for+Accessibility+-+Part+%231" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part1/&amp;title=Flash+%26+The+Quest+for+Accessibility+-+Part+%231" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part1/&amp;title=Flash+%26+The+Quest+for+Accessibility+-+Part+%231" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part1/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part1/&amp;title=Flash+%26+The+Quest+for+Accessibility+-+Part+%231" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part1/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part1/&amp;title=Flash+%26+The+Quest+for+Accessibility+-+Part+%231" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.mister-wong.com/addurl/?bm_url=http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part1/&amp;bm_description=Flash+%26+The+Quest+for+Accessibility+-+Part+%231&amp;plugin=sexybookmarks" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<img src="http://feeds.feedburner.com/~r/swfjunkie/~4/-6lumE67BkI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.swfjunkie.com/2010/06/flash-accessibility-quest-part1/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Network Issue in AIR</title>
		<link>http://blog.swfjunkie.com/2010/06/air-network-issues-on-windows/</link>
		<comments>http://blog.swfjunkie.com/2010/06/air-network-issues-on-windows/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 12:53:51 +0000</pubDate>
		<dc:creator>Sandro</dc:creator>
				<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tricks]]></category>

		<guid isPermaLink="false">http://blog.swfjunkie.com/?p=381</guid>
		<description><![CDATA[I just wasted 4 hours on this problem and figured i might aswell document it, so that if someone else is going to run into the same issue, they won&#8217;t have to suffer the same 4 hours that i just did. If you use AIR Applications under Windows and all of sudden those apps can&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>I just wasted 4 hours on this problem and figured i might aswell document it, so that if someone else is going to run into the same issue, they won&#8217;t have to suffer the same 4 hours that i just did.</p>
<p>If you use AIR Applications under Windows and all of sudden those apps can&#8217;t connect to the internet anymore, make sure that your Internet Explorer is not &#8220;Working Offline&#8221;. You can check in the Menu of Internet Explorer under <strong>Tools -&gt; Work Offline</strong>. If it has a checkmark, remove it and your apps should be working fine again.</p>
<p>I&#8217;m really suprised that the Windows Version of AIR apparently retrieves it&#8217;s Network Capabitilies via Internet Explorer and that this behaviour is in no way documented anywhere. Hopefully Adobe will changes this or atleast make sure that people now about this.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-enjoy">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Network+Issue+in+AIR+-+<h3>This domain is forbidden!</h3>&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.swfjunkie.com/2010/06/air-network-issues-on-windows/&amp;t=Network+Issue+in+AIR" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.swfjunkie.com/2010/06/air-network-issues-on-windows/&amp;title=Network+Issue+in+AIR" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://blog.swfjunkie.com/2010/06/air-network-issues-on-windows/&amp;title=Network+Issue+in+AIR" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://blog.swfjunkie.com/2010/06/air-network-issues-on-windows/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.swfjunkie.com/2010/06/air-network-issues-on-windows/&amp;title=Network+Issue+in+AIR" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://blog.swfjunkie.com/2010/06/air-network-issues-on-windows/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://blog.swfjunkie.com/2010/06/air-network-issues-on-windows/&amp;title=Network+Issue+in+AIR" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.mister-wong.com/addurl/?bm_url=http://blog.swfjunkie.com/2010/06/air-network-issues-on-windows/&amp;bm_description=Network+Issue+in+AIR&amp;plugin=sexybookmarks" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<img src="http://feeds.feedburner.com/~r/swfjunkie/~4/AG74y7ZdJio" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.swfjunkie.com/2010/06/air-network-issues-on-windows/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tweetr Tutorials – Part 2: Using OAuth in Tweetr</title>
		<link>http://blog.swfjunkie.com/2009/12/tweetr-tutorials-part-2-using-oauth-in-tweetr/</link>
		<comments>http://blog.swfjunkie.com/2009/12/tweetr-tutorials-part-2-using-oauth-in-tweetr/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 06:58:52 +0000</pubDate>
		<dc:creator>Sandro</dc:creator>
				<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Tweetr]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://blog.swfjunkie.com/?p=372</guid>
		<description><![CDATA[I&#8217;ve just finished uploading the second video tutorial to Vimeo on how to use Tweetr &#8211; The AS3 Twitter Library. In the second installment of this series i will show you how to use OAuth in Tweetr. Using OAuth in Tweetr from Sandro on Vimeo. You can grab the Project Sourcecode here. If you want [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just finished uploading the second video tutorial to Vimeo on how to use Tweetr &#8211; The AS3 Twitter Library. In the second installment of this series i will show you how to use OAuth in Tweetr.</p>
<p><center><br />
<object width="800" height="600"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=8272511&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=1&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=8272511&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=1&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="800" height="600"></embed></object>
<p><a href="http://vimeo.com/8272511">Using OAuth in Tweetr</a> from <a href="http://vimeo.com/user1167580">Sandro</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p></center></p>
<p>You can grab the Project Sourcecode <a class="snap_noshot" href="http://wiki.swfjunkie.com/_media/tweetr:hotwos:oauthexampleproject.zip" target="_blank">here</a>.</p>
<p>If you want to watch the video in the size it was intended for, go to the <a href="http://wiki.swfjunkie.com/tweetr:hotwos:using-oauth" target="_blank">Tutorial Page</a> on the <a href="http://tweetr.swfjunkie.com" target="_blank">Project Homepage</a>.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-enjoy">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Tweetr+Tutorials+-+Part+2%3A+Using+OAuth+in+Tweetr+-+<h3>This domain is forbidden!</h3>&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.swfjunkie.com/2009/12/tweetr-tutorials-part-2-using-oauth-in-tweetr/&amp;t=Tweetr+Tutorials+-+Part+2%3A+Using+OAuth+in+Tweetr" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.swfjunkie.com/2009/12/tweetr-tutorials-part-2-using-oauth-in-tweetr/&amp;title=Tweetr+Tutorials+-+Part+2%3A+Using+OAuth+in+Tweetr" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://blog.swfjunkie.com/2009/12/tweetr-tutorials-part-2-using-oauth-in-tweetr/&amp;title=Tweetr+Tutorials+-+Part+2%3A+Using+OAuth+in+Tweetr" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://blog.swfjunkie.com/2009/12/tweetr-tutorials-part-2-using-oauth-in-tweetr/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.swfjunkie.com/2009/12/tweetr-tutorials-part-2-using-oauth-in-tweetr/&amp;title=Tweetr+Tutorials+-+Part+2%3A+Using+OAuth+in+Tweetr" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://blog.swfjunkie.com/2009/12/tweetr-tutorials-part-2-using-oauth-in-tweetr/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://blog.swfjunkie.com/2009/12/tweetr-tutorials-part-2-using-oauth-in-tweetr/&amp;title=Tweetr+Tutorials+-+Part+2%3A+Using+OAuth+in+Tweetr" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.mister-wong.com/addurl/?bm_url=http://blog.swfjunkie.com/2009/12/tweetr-tutorials-part-2-using-oauth-in-tweetr/&amp;bm_description=Tweetr+Tutorials+-+Part+2%3A+Using+OAuth+in+Tweetr&amp;plugin=sexybookmarks" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<img src="http://feeds.feedburner.com/~r/swfjunkie/~4/98rMPwjfqxA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.swfjunkie.com/2009/12/tweetr-tutorials-part-2-using-oauth-in-tweetr/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>First Tweetr Lib Video Tutorial &amp; v1.0 beta 2 released</title>
		<link>http://blog.swfjunkie.com/2009/12/first-tweetr-lib-video-tutorial-v1-0-beta-2-released/</link>
		<comments>http://blog.swfjunkie.com/2009/12/first-tweetr-lib-video-tutorial-v1-0-beta-2-released/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 23:45:39 +0000</pubDate>
		<dc:creator>Sandro</dc:creator>
				<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Tweetr]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Update]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://blog.swfjunkie.com/?p=369</guid>
		<description><![CDATA[I&#8217;ll make this short and painless ;) I&#8217;ve just uploaded the first Video of a Series of Videotutorials on how-to use the Tweetr Library. The first installment is covering &#8220;Installing &#38; Setting up the TweetrProxy&#8221; and you can watch it in it&#8217;s intended size by following this link. Installing &#38; Setting up the TweetrProxy from [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll make this short and painless ;) I&#8217;ve just uploaded the first Video of a Series of Videotutorials on how-to use the Tweetr Library.</p>
<p>The first installment is covering <strong>&#8220;Installing &amp; Setting up the TweetrProxy&#8221;</strong> and you can watch it in it&#8217;s intended size by following <a title="To the Tutorial" href="http://wiki.swfjunkie.com/tweetr:howtos:installing-the-proxy" target="_blank">this link</a>.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="800" height="600" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=8224362&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=1&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1&amp;group_id=" /><embed type="application/x-shockwave-flash" width="800" height="600" src="http://vimeo.com/moogaloop.swf?clip_id=8224362&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=1&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1&amp;group_id=" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/groups/30018/videos/8224362">Installing &amp; Setting up the TweetrProxy</a> from <a href="http://vimeo.com/user1167580">Sandro</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>On the Tweetr-Front i&#8217;ve already released v1.0 beta 2 which adds a couple fixes. Here a short update:</p>
<ul>
<li><strong>AS:</strong> changed serviceHost call from getter to internal variable _serviceHost <em>[minor]</em></li>
<li><strong>AS:</strong> added serviceHost to OAuth Class since same crossdomain problem applies <em>[major]</em></li>
<li><strong>PROXY: </strong>added OAuth Authorization support <em>[major]</em></li>
<li><strong>ASDOC:</strong> Update Documentations, also added which Methods require Authentication <em>[minor]</em></li>
</ul>
<p>As usual you can download the new version from the <a title="Go to the Project Homepage" href="http://tweetr.swfjunkie.com" target="_blank">Project Homepage</a>.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-enjoy">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=First+Tweetr+Lib+Video+Tutorial+%26+v1.0+beta+2+released+-+<h3>This domain is forbidden!</h3>&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.swfjunkie.com/2009/12/first-tweetr-lib-video-tutorial-v1-0-beta-2-released/&amp;t=First+Tweetr+Lib+Video+Tutorial+%26+v1.0+beta+2+released" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.swfjunkie.com/2009/12/first-tweetr-lib-video-tutorial-v1-0-beta-2-released/&amp;title=First+Tweetr+Lib+Video+Tutorial+%26+v1.0+beta+2+released" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://blog.swfjunkie.com/2009/12/first-tweetr-lib-video-tutorial-v1-0-beta-2-released/&amp;title=First+Tweetr+Lib+Video+Tutorial+%26+v1.0+beta+2+released" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://blog.swfjunkie.com/2009/12/first-tweetr-lib-video-tutorial-v1-0-beta-2-released/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.swfjunkie.com/2009/12/first-tweetr-lib-video-tutorial-v1-0-beta-2-released/&amp;title=First+Tweetr+Lib+Video+Tutorial+%26+v1.0+beta+2+released" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://blog.swfjunkie.com/2009/12/first-tweetr-lib-video-tutorial-v1-0-beta-2-released/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://blog.swfjunkie.com/2009/12/first-tweetr-lib-video-tutorial-v1-0-beta-2-released/&amp;title=First+Tweetr+Lib+Video+Tutorial+%26+v1.0+beta+2+released" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.mister-wong.com/addurl/?bm_url=http://blog.swfjunkie.com/2009/12/first-tweetr-lib-video-tutorial-v1-0-beta-2-released/&amp;bm_description=First+Tweetr+Lib+Video+Tutorial+%26+v1.0+beta+2+released&amp;plugin=sexybookmarks" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<img src="http://feeds.feedburner.com/~r/swfjunkie/~4/iHfUxtgVPaw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.swfjunkie.com/2009/12/first-tweetr-lib-video-tutorial-v1-0-beta-2-released/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tweetr Lib reaches v1.0b</title>
		<link>http://blog.swfjunkie.com/2009/12/tweetr-lib-reaches-v1-0b/</link>
		<comments>http://blog.swfjunkie.com/2009/12/tweetr-lib-reaches-v1-0b/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 16:04:42 +0000</pubDate>
		<dc:creator>Sandro</dc:creator>
				<category><![CDATA[Featured Articles]]></category>
		<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Tweetr]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Update]]></category>

		<guid isPermaLink="false">http://blog.swfjunkie.com/?p=360</guid>
		<description><![CDATA[UPDATED: Tweetr has gotten an Update since this blog post. See this blog post for more infos. I&#8217;m proud to announce a major update to Tweetr &#8211; the AS3 Twitter API Library. We are now very close to reaching the infamous v1.0! Eventhough i have tested out most of the features, i am not entirely [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.swfjunkie.com/wp-content/uploads/2009/12/tweetrv1.jpg"><img class="aligncenter size-full wp-image-361" title="tweetrv1" src="http://blog.swfjunkie.com/wp-content/uploads/2009/12/tweetrv1.jpg" alt="tweetrv1" width="619" height="240" /></a></p>
<blockquote><p><strong>UPDATED:</strong> <em>Tweetr has gotten an Update since this blog post. See <a href="http://blog.swfjunkie.com/2010/08/tweetr-v1-0b3-out/">this blog post</a> for more infos.</em></p></blockquote>
<p>I&#8217;m proud to announce a major update to Tweetr &#8211; the AS3 Twitter API Library. We are now very close to reaching the infamous v1.0!</p>
<p>Eventhough i have tested out most of the features, i am not entirely confident in calling this new release v1.0 and am thereby releasing it as v1.0 beta and hope all of you will provide me with feedback as to how well it works out and if you encounter any bugs.</p>
<p>The new version is available as of right now and can be downloaded from to shiney new Project Home at: <a title="Tweet Project Home" href="http://tweetr.swfjunkie.com" target="_blank">http://tweetr.swfjunkie.com</a> .</p>
<h2>What&#8217;s new</h2>
<p>As of now, the library integrates all twitter API features and is supporting Basic Authentication aswell as the much requested OAuth!</p>
<ul>
<li>AS: added OAuth Support</li>
<li>AS: added getHomeTimeLine</li>
<li>AS: added getRetweetsByMe</li>
<li>AS: added getRetweetsToMe</li>
<li>AS: added getRetweetsOfMe</li>
<li>AS: added retweetStatus</li>
<li>AS: added statusRetweets</li>
<li>AS: added Geo Tagging feature to updateStatus</li>
<li>AS: added searchUser</li>
<li>AS: added description property to ListData</li>
<li>AS: updated StatusData to include Retweeted Statuses and Geo Information</li>
<li>AS: refactored GET Request argument passing</li>
<li>AS: fixed a bug when parsing SavedSearchData (thx Ken)</li>
<li>AS: removed deprecated methods, sendTweet, destroyTweet, getSingleTweet, getReplies</li>
</ul>
<ul>
<li>PROXY: Fixed an Image Upload Bug (thx Bhargava)</li>
<li>PROXY: OAuth Support</li>
</ul>
<h2>Known Issues</h2>
<p>As of right now there is one known issue with OAuth and DELETE Methods for Lists. This is a official Issue within the Twitter API thereby we all have to wait for Twitter to come out with a fix for it :)</p>
<h2>What&#8217;s next</h2>
<p>Next i will be doing some Tutorials on OAuth usage and in general on how to use the Library. These will then be posted over at the new <a href="http://tweetr.swfjunkie.com" target="_blank">Project Homepage</a>. Also i really hope you &#8211; dear users &#8211; will provide me with feedback on how things work. For that i have setup a Issue Tracker which you will also be able to find from the new <a href="http://tweetr.swfjunkie.com" target="_blank">Project Homepage.</a></p>
<h2>Whom i&#8217;d like to thank</h2>
<p>There is one person in particular i would like to thank and that person is <span><a href="http://www.coderanger.com/" target="_blank">Dan Petitt</a> aka <a href="http://twitter.com/coderanger" target="_blank">Coderanger</a> . I was able to base my OAuth implementation on his great <a href="http://www.coderanger.com/blog/?p=59" target="_blank">OAuth Class</a>, which really helped me getting started. Thanks mate!<br />
</span></p>
<p><span>Also i would like to thank you all for the continuous feedback you are giving me</span><span> and please keep it coming :)</span></p>
<p><span>As always, if you build something cool with the library, drop me a line!<br />
</span></p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-enjoy">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Tweetr+Lib+reaches+v1.0b+-+<h3>This domain is forbidden!</h3>&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.swfjunkie.com/2009/12/tweetr-lib-reaches-v1-0b/&amp;t=Tweetr+Lib+reaches+v1.0b" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.swfjunkie.com/2009/12/tweetr-lib-reaches-v1-0b/&amp;title=Tweetr+Lib+reaches+v1.0b" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://blog.swfjunkie.com/2009/12/tweetr-lib-reaches-v1-0b/&amp;title=Tweetr+Lib+reaches+v1.0b" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://blog.swfjunkie.com/2009/12/tweetr-lib-reaches-v1-0b/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.swfjunkie.com/2009/12/tweetr-lib-reaches-v1-0b/&amp;title=Tweetr+Lib+reaches+v1.0b" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://blog.swfjunkie.com/2009/12/tweetr-lib-reaches-v1-0b/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://blog.swfjunkie.com/2009/12/tweetr-lib-reaches-v1-0b/&amp;title=Tweetr+Lib+reaches+v1.0b" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.mister-wong.com/addurl/?bm_url=http://blog.swfjunkie.com/2009/12/tweetr-lib-reaches-v1-0b/&amp;bm_description=Tweetr+Lib+reaches+v1.0b&amp;plugin=sexybookmarks" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<img src="http://feeds.feedburner.com/~r/swfjunkie/~4/oPfgu25xz9A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.swfjunkie.com/2009/12/tweetr-lib-reaches-v1-0b/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
