topical media & game development

talk show tell print

actionscript-extra-flickr-manual.mx

actionscript-extra-flickr-manual.mx [swf] flex


  <?xml version="1.0" encoding="utf-8"?>
  
  <!--
  Adobe Systems Incorporated(r) Source Code License Agreement
  Copyright(c) 2005 Adobe Systems Incorporated. All rights reserved.
          
  Please read this Source Code License Agreement carefully before using
  the source code.
          
  Adobe Systems Incorporated grants to you a perpetual, worldwide, non-exclusive,
  no-charge, royalty-free, irrevocable copyright license, to reproduce,
  prepare derivative works of, publicly display, publicly perform, and
  distribute this source code and such derivative works in source or
  object code form without any attribution requirements.
          
  The name "Adobe Systems Incorporated" must not be used to endorse or promote products
  derived from the source code without prior written permission.
          
  You agree to indemnify, hold harmless and defend Adobe Systems Incorporated from and
  against any loss, damage, claims or lawsuits, including attorney's
  fees that arise or result from your use or distribution of the source
  code.
          
  THIS SOURCE CODE IS PROVIDED "AS IS" AND "WITH ALL FAULTS", WITHOUT
  ANY TECHNICAL SUPPORT OR ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
  BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ALSO, THERE IS NO WARRANTY OF
  NON-INFRINGEMENT, TITLE OR QUIET ENJOYMENT. IN NO EVENT SHALL MACROMEDIA
  OR ITS SUPPLIERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOURCE CODE, EVEN IF
  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  -->
  
  <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*"
          creationComplete="initApp();">
  
          <mx:Script>
                  <![CDATA[
                  
                          import com.adobe.webapis.flickr.*;
                          import com.adobe.webapis.flickr.events.FlickrResultEvent;
                          
                          //import mx.events.AlertClickEvent;
                          import mx.controls.Alert;
                          import mx.utils.ObjectUtil;
                          import flash.net.*;
                          import flash.geom.Rectangle;
                  
                          private var service:FlickrService;
                          private var frob:String; // store the frob we'll use for authentication
                          
                          
Initialize the application by creating a new instance of the Flickr api with our application's api key

  
                          public function initApp():void
                          {
                                  var api_key:String = "[your flickr api key]";
                                  service = new FlickrService( api_key );
                                  service.secret = "[your flickr secret key]";
                                                          
                                  // Check to see if the auth token was stored, and if so
                                  // check the token to see if a user is logged in and what
                                  // kind of permission they have
                                  var flickrCookie:SharedObject = SharedObject.getLocal( "FlickrServiceTest" );
                                  if ( flickrCookie.data.auth_token ) {
                                          debug.text += "Found stored token.. trying to auto-login\n";
                                          
                                          // Check the token with the service to auto log in the user
                                          service.addEventListener( FlickrResultEvent.AUTH_CHECK_TOKEN, checkTokenResponse );
                                          service.auth.checkToken( flickrCookie.data.auth_token );
                                  }
                          
                                  
                          }
                          
                          
Called if there was a token stored locally in a cookie. Try to log the user back in based on the token, otherwise clear the value.

  
                          private function checkTokenResponse( event:FlickrResultEvent ):void {
                                  debug.text += "checkTokenResponse: success = " + event.success + "\n";
                                  if ( event.success ) {
                                          // Re-use the login logic in getTokenResponse
                                          getTokenResponse( event );
                                  } else {
                                          var flickrCookie:SharedObject = SharedObject.getLocal( "FlickrServiceTest" );
                                          flickrCookie.clear();
                                  }
                          }
                  
                          
Some methods require authentication, so this is how you would start the login sequence. We need to set the secret assigned to our particular application, and then get a frob used for authentication.

  
                          private function startLoginSequence():void {
                                  service.addEventListener( FlickrResultEvent.AUTH_GET_FROB, getFrobResponse );
                                  service.auth.getFrob();
                          }
                          
                          
When we receive the frob, we need to construct a login link and open a browser window for the user to log into the flickr site. Use the service getLoginURL method to construct a login link with the frob we received, and pass along the permission we'd like to be granted from the user.

  
                          private function getFrobResponse( event:FlickrResultEvent ):void {
                                  debug.text += "getFrobResponse: success = " + event.success + "\n";
                                  
                                  if ( event.success ) {
                                          // Have the service construct a login url for us with the
                                          // authentication frob, and request the user that we'd like
                                          // to have DELETE access to their data
                                          frob = String( event.data );
                                          var auth_url:String = service.getLoginURL( frob, AuthPerm.DELETE );
                                          
                                          // Open a new browser window to authenticate the user
                                          // and grant our application permission
                                          navigateToURL( new URLRequest( auth_url ), "_blank" );
                                                                                  
                                          // Show the alert saying  they need to authenticate on the 
                                          // flickr site.  when the alert closes, we need to get the 
                                          // token then to get their logged-in status
                                          Alert.show( "This application requires that you authenticate"
                                                                  + " on Flickr.com before proceeding.  Please log in"
                                                                  + " to Flickr in the separate browser window that"
                                                                  + " opened.  After you have successfully logged in,"
                                                                  + " press 'OK' below to continue",
                                                                  "Authentication Required",
                                                                  Alert.OK | Alert.CANCEL,
                                                                  null,
                                                                  onCloseAuthWindow );
                                                                  
                                  } else {
                                          debug.text += "error code: " + event.data.error.errorCode + "\n";
                                          debug.text += "error message: " + event.data.error.errorMessage + "\n";
                                  }
                          }
                          
                          
After the alert closes, if they pressed the OK button we assume that they logged into Flickr, so try to get their auth token that we can use throughout the rest of our app

  
                          private function onCloseAuthWindow( event:* ):void {
                                  // Only process if they pressed OK
                                  if ( event.detail == Alert.OK ) {
                                          // Get their authentication token, and call getTokenResponse
                                          // when it's available
                                          service.addEventListener( FlickrResultEvent.AUTH_GET_TOKEN, getTokenResponse );
                                          service.auth.getToken( frob );        
                                  }
                          }
                          
                          
This completes the login process. When the user is successfully authenticated and the application has permission to use their data, there will be a token that flickr assigns to us.

  
                          private function getTokenResponse( event:FlickrResultEvent ):void {
                                  debug.text += "getTokenResponse: success = " + event.success + "\n";
                                  
                                  if ( event.success ) {
                                          var authResult:AuthResult = AuthResult( event.data );
                                          // dump the object internals for debugging
                                          debug.text += ObjectUtil.toString( authResult ) + "\n";
                                          
                                          // Assign the token and permission to the service so that
                                          // all calls that require authentication have their values
                                          // populated
                                          service.token = authResult.token;
                                          service.permission = authResult.perms;
                                          
                                          // Save the token in a shared object so that when the application
                                          // loads again we can re-authenticate automatically
                                          var flickrCookie:SharedObject = SharedObject.getLocal( "FlickrServiceTest" );
                                          flickrCookie.data.auth_token = service.token;
                                          flickrCookie.flush();
                                          
                                          // Update the UI to show the currently logged in username
                                          username.text = authResult.user.username + " (" + authResult.user.fullname + " )";
                                          permission.text = service.permission;
                                          
                                          debug.text += "token: " + service.token + "\n";
                                          debug.text += "perms: " + service.permission + "\n";
                                          
                                          // Toggle the login/logout buttons
                                          login.visible = false;
                                          logout.visible = true;
                                          
                                  } else {
                                          debug.text += "error code: " + event.data.errorCode + "\n";
                                          debug.text += "error message: " + event.data.errorMessage + "\n";
                                  }
                          }
                          
                          
Calls the appropriate Flickr method based on the selection in the method combobox

  
                          private function invokeFlickrMethod():void {
                                  switch ( method.selectedLabel ) {
                                          
                                          case "flickr.blogs.getList":
                                                  service.addEventListener( FlickrResultEvent.BLOGS_GET_LIST, genericResponseHandler );
                                                  service.blogs.getList();
                                                  break;
                                                  
                                          case "flickr.blogs.postPhoto":
                                                  service.addEventListener( FlickrResultEvent.BLOGS_POST_PHOTO, genericResponseHandler );
                                                  service.blogs.postPhoto( "0", "0", "test title", "test desc", "test password" );
                                                  break;
                                                  
                                          case "flickr.contacts.getList":
                                                  service.addEventListener( FlickrResultEvent.CONTACTS_GET_LIST, genericResponseHandler );
                                                  service.contacts.getList();
                                                  break;
                                                  
                                          case "flickr.contacts.getPublicList":
                                                  service.addEventListener( FlickrResultEvent.CONTACTS_GET_PUBLIC_LIST, genericResponseHandler );
                                                  service.contacts.getPublicList( "82511024@N00" );
                                                  break;
                                                  
                                          case "flickr.favorites.add":
                                                  service.addEventListener( FlickrResultEvent.FAVORITES_ADD, genericResponseHandler );
                                                  service.favorites.add( "14849732" );
                                                  break;
                                                  
                                          case "flickr.favorites.getList":
                                                  service.addEventListener( FlickrResultEvent.FAVORITES_GET_LIST, genericResponseHandler );
                                                  service.favorites.getList( "", "license,date_upload,date_taken,owner_name,icon_server,original_format" );
                                                  break;
                                                  
                                          case "flickr.favorites.getPublicList":
                                                  service.addEventListener( FlickrResultEvent.FAVORITES_GET_PUBLIC_LIST, genericResponseHandler );
                                                  service.favorites.getPublicList( "82511024@N00" );
                                                  break;
                                                  
                                          case "flickr.favorites.remove":
                                                  service.addEventListener( FlickrResultEvent.FAVORITES_REMOVE, genericResponseHandler );
                                                  service.favorites.remove( "14849732" );
                                                  break;
                                                  
                                          case "flickr.groups.browse":
                                                  service.addEventListener( FlickrResultEvent.GROUPS_BROWSE, genericResponseHandler );
                                                  service.groups.browse( "0" );
                                                  break;
                                          
                                          case "flickr.groups.getInfo":
                                                  service.addEventListener( FlickrResultEvent.GROUPS_GET_INFO, genericResponseHandler );
                                                  service.groups.getInfo( "30691243@N00" );
                                                  break;
                                                  
                                          case "flickr.groups.search":
                                                  service.addEventListener( FlickrResultEvent.GROUPS_SEARCH, genericResponseHandler );
                                                  service.groups.search( "macromedia" );
                                                  break;
                                                  
                                          case "flickr.groups.pools.add":
                                                  service.addEventListener( FlickrResultEvent.GROUPS_POOLS_ADD, genericResponseHandler );
                                                  service.groups.pools.add( "0", "123" );
                                                  break;
                                                  
                                          case "flickr.groups.pools.getContext":
                                                  service.addEventListener( FlickrResultEvent.GROUPS_POOLS_GET_CONTEXT, genericResponseHandler );
                                                  service.groups.pools.getContext( "69878677", "62045142@N00" );
                                                  break;
                                          
                                          case "flickr.groups.pools.getGroups":
                                                  service.addEventListener( FlickrResultEvent.GROUPS_POOLS_GET_GROUPS, genericResponseHandler );
                                                  service.groups.pools.getGroups( );
                                                  break;
                                          
                                          case "flickr.groups.pools.getPhotos":
                                                  service.addEventListener( FlickrResultEvent.GROUPS_POOLS_GET_PHOTOS, genericResponseHandler );
                                                  service.groups.pools.getPhotos( "62045142@N00" );
                                                  break;
                                                  
                                          case "flickr.groups.pools.remove":
                                                  service.addEventListener( FlickrResultEvent.GROUPS_POOLS_REMOVE, genericResponseHandler );
                                                  service.groups.pools.remove( "0", "123" );
                                                  break;
                                          
                                          case "flickr.people.findByEmail":
                                                  service.addEventListener( FlickrResultEvent.PEOPLE_FIND_BY_EMAIL, genericResponseHandler );
                                                  service.people.findByEmail( "ddura@macromedia.com" );
                                                  break;
                                                  
                                          case "flickr.people.findByUsername":
                                                  service.addEventListener( FlickrResultEvent.PEOPLE_FIND_BY_USERNAME, genericResponseHandler );
                                                  service.people.findByUsername( "darronschall" );
                                                  break;
                                                  
                                          case "flickr.people.getInfo":
                                                  service.addEventListener( FlickrResultEvent.PEOPLE_GET_INFO, genericResponseHandler );
                                                  service.people.getInfo( "82511024@N00" );
                                                  break;
                                                  
                                          case "flickr.people.getPublicGroups":
                                                  service.addEventListener( FlickrResultEvent.PEOPLE_GET_PUBLIC_GROUPS, genericResponseHandler );
                                                  service.people.getPublicGroups( "82511024@N00" );
                                                  break;
                                                  
                                          case "flickr.people.getPublicPhotos":
                                                  service.addEventListener( FlickrResultEvent.PEOPLE_GET_PUBLIC_PHOTOS, genericResponseHandler );
                                                  service.people.getPublicPhotos( "82511024@N00" );
                                                  break;
                                                  
                                          case "flickr.people.getUploadStatus":
                                                  service.addEventListener( FlickrResultEvent.PEOPLE_GET_UPLOAD_STATUS, genericResponseHandler );
                                                  service.people.getUploadStatus( );
                                                  break;
                                                  
                                          case "flickr.photos.addTags":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_ADD_TAGS, genericResponseHandler );
                                                  service.photos.addTags( "1", "test" );
                                                  break;
                                          
                                          case "flickr.photos.getAllContexts":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_GET_ALL_CONTEXTS, genericResponseHandler );
                                                  service.photos.getAllContexts( "69999323" );
                                                  break;
                                                  
                                          case "flickr.photos.getContactsPhotos":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_GET_CONTACTS_PHOTOS, genericResponseHandler );
                                                  service.photos.getContactsPhotos();
                                                  break;
                                                  
                                          case "flickr.photos.getContactsPublicPhotos":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_GET_CONTACTS_PUBLIC_PHOTOS, genericResponseHandler );
                                                  service.photos.getContactsPublicPhotos( "82511024@N00" );
                                                  break;
                                                  
                                          case "flickr.photos.getContext":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_GET_CONTEXT, genericResponseHandler );
                                                  service.photos.getContext( "69999323" );
                                                  break;
                                                  
                                          case "flickr.photos.getCounts":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_GET_COUNTS, genericResponseHandler );
                                                  
                                                  var dates:Array = new Array();
                                                  dates.push( new Date( 2005, 0, 1 ) );
                                                  dates.push( new Date( 2005, 1, 1 ) );
                                                  dates.push( new Date( 2005, 2, 1 ) );
                                                  dates.push( new Date( 2005, 3, 1 ) );
                                                  dates.push( new Date( 2005, 4, 1 ) );
                                                  dates.push( new Date( 2005, 5, 1 ) );
                                                  dates.push( new Date( 2005, 6, 1 ) );
                                                  dates.push( new Date( 2005, 7, 1 ) );
                                                  dates.push( new Date( 2005, 8, 1 ) );
                                                  dates.push( new Date( 2005, 9, 1 ) );
                                                  dates.push( new Date( 2005, 10, 1 ) );
                                                  dates.push( new Date( 2005, 11, 1 ) );
                                                  dates.push( new Date( 2006, 0, 1 ) );
                                                  service.photos.getCounts( dates );
                                                  break;
                                                  
                                          case "flickr.photos.getExif":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_GET_EXIF, genericResponseHandler );
                                                  service.photos.getExif( "69999323" );
                                                  break;
                                                  
                                          case "flickr.photos.getInfo":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_GET_INFO, genericResponseHandler );
                                                  service.photos.getInfo( "69999323" );
                                                  break;
                                                  
                                          case "flickr.photos.getNotInSet":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_GET_NOT_IN_SET, genericResponseHandler );
                                                  service.photos.getNotInSet( "license,date_upload,date_taken,owner_name,icon_server,original_format" );
                                                  break;
                                                  
                                          case "flickr.photos.getPerms":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_GET_PERMS, genericResponseHandler );
                                                  service.photos.getPerms( "38059757" );
                                                  break;
                                                  
                                          case "flickr.photos.getRecent":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_GET_RECENT, genericResponseHandler );
                                                  service.photos.getRecent( "license,date_upload,date_taken,owner_name,icon_server,original_format" );
                                                  break;
                                                  
                                          case "flickr.photos.getSizes":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_GET_SIZES, genericResponseHandler );
                                                  service.photos.getSizes( "38059757" );
                                                  break;
                                                  
                                          case "flickr.photos.getUntagged":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_GET_UNTAGGED, genericResponseHandler );
                                                  service.photos.getUntagged( );
                                                  break;
                                                  
                                          case "flickr.photos.removeTag":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_REMOVE_TAG, genericResponseHandler );
                                                  service.photos.removeTag( "1" );
                                                  break;
                                                  
                                          case "flickr.photos.search":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_SEARCH, genericResponseHandler );
                                                  service.photos.search( "", "macromedia" );
                                                  break;
                                                  
                                          case "flickr.photos.setDates":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_SET_DATES, genericResponseHandler );
                                                  service.photos.setDates( "1" );
                                                  break;
                                                  
                                          case "flickr.photos.setMeta":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_SET_META, genericResponseHandler );
                                                  service.photos.setMeta( "1", "test title", "test description" );
                                                  break;
                                                  
                                          case "flickr.photos.setPerms":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_SET_PERMS, genericResponseHandler );
                                                  service.photos.setPerms( "1", true, true, true, 0, 0 );
                                                  break;
                                                  
                                          case "flickr.photos.setTags":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_SET_TAGS, genericResponseHandler );
                                                  service.photos.setTags( "1", "test \"tag with space\" tag" );
                                                  break;
                                                  
                                          case "flickr.photos.licenses.getInfo":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_LICENSES_GET_INFO, genericResponseHandler );
                                                  service.photos.licenses.getInfo( );
                                                  break;
                                                  
                                          case "flickr.photos.licenses.setLicense":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_LICENSES_SET_LICENSE, genericResponseHandler );
                                                  service.photos.licenses.setLicense( "38059757", License.ALL_RIGHTS_RESERVED );
                                                  break;
                                                  
                                          case "flickr.photos.notes.add":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_NOTES_ADD, genericResponseHandler );
                                                  service.photos.notes.add( "1", new Rectangle(0, 0, 100, 100), "test" );
                                                  break;
                                                  
                                          case "flickr.photos.notes.deleteNote":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_NOTES_DELETE, genericResponseHandler );
                                                  service.photos.notes.deleteNote( "1" );
                                                  break;
                                                  
                                          case "flickr.photos.notes.edit":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_NOTES_EDIT, genericResponseHandler );
                                                  service.photos.notes.edit( "1", new Rectangle(0, 0, 100, 100), "test" );
                                                  break;
                                                  
                                          case "flickr.photos.transform.rotate":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_TRANSFORM_ROTATE, genericResponseHandler );
                                                  service.photos.transform.rotate( "1", 180 );
                                                  break;
                                                  
                                          case "flickr.photos.upload.checkTickets":
                                                  service.addEventListener( FlickrResultEvent.PHOTOS_UPLOAD_CHECK_TICKETS, genericResponseHandler );
                                                  service.photos.upload.checkTickets( [1,2,3,4] );
                                                  break;
                                                  
                                          case "flickr.photos.upload.upload":
                                                  var file:FileReference = new FileReference();
                                                  var types:Array = [{description: "Images (*.jpg;*.gif;*.png)", 
                                                                                          extension: "*.jpg;*.gif;*.png"}]
                                                  file.addEventListener( "select", onUploadPhotoSelect );
                                                  file.browse( /*types*/ );
                                                  
                                                  
                                                  break;
                                                  
                                          case "flickr.photosets.addPhoto":
                                                  service.addEventListener( FlickrResultEvent.PHOTOSETS_ADD_PHOTO, genericResponseHandler );
                                                  service.photosets.addPhoto( "1", "1" );
                                                  break;
                                                  
                                          case "flickr.photosets.create":
                                                  service.addEventListener( FlickrResultEvent.PHOTOSETS_CREATE, genericResponseHandler );
                                                  service.photosets.create( "test title", "", "1" );
                                                  break;
                                                  
                                          case "flickr.photosets.deleteSet":
                                                  service.addEventListener( FlickrResultEvent.PHOTOSETS_DELETE, genericResponseHandler );
                                                  service.photosets.deleteSet( "1" );
                                                  break;
                                                  
                                          case "flickr.photosets.editMeta":
                                                  service.addEventListener( FlickrResultEvent.PHOTOSETS_EDIT_META, genericResponseHandler );
                                                  service.photosets.editMeta( "1", "new title", "new desc" );
                                                  break;
                                                  
                                          case "flickr.photosets.editPhotos":
                                                  service.addEventListener( FlickrResultEvent.PHOTOSETS_EDIT_PHOTOS, genericResponseHandler );
                                                  service.photosets.editPhotos( "1", "3", [1, 2, 3, 4] );
                                                  break;
                                                  
                                          case "flickr.photosets.getContext":
                                                  service.addEventListener( FlickrResultEvent.PHOTOSETS_GET_CONTEXT, genericResponseHandler );
                                                  service.photosets.getContext( "53537944", "838083" );
                                                  break;
                                                  
                                          case "flickr.photosets.getInfo":
                                                  service.addEventListener( FlickrResultEvent.PHOTOSETS_GET_INFO, genericResponseHandler );
                                                  service.photosets.getInfo( "838083" );
                                                  break;
                                                  
                                          case "flickr.photosets.getList":
                                                  service.addEventListener( FlickrResultEvent.PHOTOSETS_GET_LIST, genericResponseHandler );
                                                  service.photosets.getList( "39443901262@N01" );
                                                  break;
                                                  
                                          case "flickr.photosets.getPhotos":
                                                  service.addEventListener( FlickrResultEvent.PHOTOSETS_GET_PHOTOS, genericResponseHandler );
                                                  service.photosets.getPhotos( "838083" );
                                                  break;
                                                  
                                          case "flickr.photosets.orderSets":
                                                  service.addEventListener( FlickrResultEvent.PHOTOSETS_ORDER_SETS, genericResponseHandler );
                                                  service.photosets.orderSets( [1, 2, 3] );
                                                  break;
                                                  
                                          case "flickr.photosets.removePhoto":
                                                  service.addEventListener( FlickrResultEvent.PHOTOSETS_REMOVE_PHOTO, genericResponseHandler );
                                                  service.photosets.removePhoto( "1", "1" );
                                                  break;
                                                  
                                          case "flickr.tags.getListPhoto":
                                                  service.addEventListener( FlickrResultEvent.TAGS_GET_LIST_PHOTO, genericResponseHandler );
                                                  service.tags.getListPhoto( "53537944" );
                                                  break;
                                                  
                                          case "flickr.tags.getListUser":
                                                  service.addEventListener( FlickrResultEvent.TAGS_GET_LIST_USER, genericResponseHandler );
                                                  service.tags.getListUser( "39443901262@N01" );
                                                  break;
                                                  
                                          case "flickr.tags.getListUserPopular":
                                                  service.addEventListener( FlickrResultEvent.TAGS_GET_LIST_USER_POPULAR, genericResponseHandler );
                                                  service.tags.getListUserPopular( "39443901262@N01" );
                                                  break;
                                                  
                                          case "flickr.tags.getRelated":
                                                  service.addEventListener( FlickrResultEvent.TAGS_GET_RELATED, genericResponseHandler );
                                                  service.tags.getRelated( "macromedia" );
                                                  break;
                                                  
                                          case "flickr.test.echo":
                                                  service.addEventListener( FlickrResultEvent.TEST_ECHO, testEchoResponse );
                                                  service.test.echo( extraArgs.text );
                                                  break;
                                                  
                                          case "flickr.test.login":
                                                  service.addEventListener( FlickrResultEvent.TEST_LOGIN, testLoginResponse );
                                                  service.test.login();
                                                  break;
                                                  
                                          case "flickr.urls.getGroup":
                                                  service.addEventListener( FlickrResultEvent.URLS_GET_GROUP, genericResponseHandler );
                                                  service.urls.getGroup( "62045142@N00" );
                                                  break;
                                                  
                                          case "flickr.urls.getUserPhotos":
                                                  service.addEventListener( FlickrResultEvent.URLS_GET_USER_PHOTOS, genericResponseHandler );
                                                  service.urls.getUserPhotos( "39443901262@N01" );
                                                  break;
                                                  
                                          case "flickr.urls.getUserProfile":
                                                  service.addEventListener( FlickrResultEvent.URLS_GET_USER_PROFILE, genericResponseHandler );
                                                  service.urls.getUserProfile( "39443901262@N01" );
                                                  break;
                                                  
                                          case "flickr.urls.lookupGroup":
                                                  service.addEventListener( FlickrResultEvent.URLS_LOOKUP_GROUP, genericResponseHandler );
                                                  service.urls.lookupGroup( "http://www.flickr.com/groups/picturethemoon/" );
                                                  break;
                                                  
                                          case "flickr.urls.lookupUser":
                                                  service.addEventListener( FlickrResultEvent.URLS_LOOKUP_USER, genericResponseHandler );
                                                  service.urls.lookupUser( "http://www.flickr.com/photos/darronschall" );
                                                  break;
                                  }
                          }
                          
                          
Handles the result of the flickr.test.echo method

  
                          public function testEchoResponse( event:FlickrResultEvent ):void {
                                  debug.text += "testEchoResponse: success = " + event.success + "\n";
                                  
                                  if ( event.success ) {
                                          debug.text += "api_key = " + event.data.api_key + "\n";
                                          debug.text += "method = " + event.data.method + "\n";
                                          debug.text += "param0 = " + event.data.param0 + "\n";
                                  } else {
                                          debug.text += "error code: " + event.data.errorCode + "\n"
                                          debug.text += "error message: " + event.data.errorMessage + "\n"
                                  }
                          }
                          
                          
Handles the result of the flickr.test.login method

  
                          public function testLoginResponse( event:FlickrResultEvent ):void {
                                  debug.text += "testLoginResponse: success = " + event.success + "\n";
                                  
                                  if ( event.success ) {
                                          var user:XML = XML( event.data.user );
                                          debug.text += "Logged in as: " + user.username.toString() + " (id= " + user.@id.toString() + " )" + "\n";
                                  } else {
                                          debug.text += "error code: " + event.data.errorCode + "\n";
                                          debug.text += "error message: " + event.data.errorMessage + "\n";
                                          
                                          // Example of examining the error code to create a more
                                          // meaningful message for the user
                                          switch ( event.data.errorCode ) {
                                                  case FlickrError.INSUFFICIENT_PERMISSIONS:
                                                          debug.text += "You don't have permission to call this method." + "\n";
                                                          break;
                                          }
                                  }
                          }
                          
                          
Generically handle the response to a flickr method call - just output the information in the event to the screen.

  
                          private function genericResponseHandler( event:FlickrResultEvent ):void {
                                  debug.text += event.type +  " success = " + event.success + "\n";
                                  
                                  if ( event.success ) {
                                          // The call was successful, just dump out the data object
                                          debug.text += ObjectUtil.toString( event.data ) + "\n";
                                  } else {
                                          // Encountered some kind of error on Flickr...
                                          var e:FlickrError = FlickrError( event.data.error );
                                          
                                          debug.text += "error code: " + e.errorCode + "\n";
                                          debug.text += "error message: " + e.errorMessage + "\n";
                                  }
                          }
                          
                          
When the user selects a file to upload, this handles the upload

  
                          private function onUploadPhotoSelect( event:Event ):void {
                                  /* Upload doesn't work - need some player modifications first */
                                  //service.photos.upload.upload( FileReference( event.target ), "test", "dest descr", "testtag" );
                          }
                          
                          
Logout the user from the application and update the display

  
                          private function processLogout():void {
                                                  
                                  // Configure the service so it looks like the user
                                  // is logged out
                                  service.token = "";
                                  service.permission = AuthPerm.NONE;
                                  
                                  // Update the UI to reflect the user being logged out
                                  login.visible = true;
                                  username.text = "Not logged in.";
                                  permission.text = "none";
                                  logout.visible = false;
                                  
                                  // Clear the authentication cookie so we don't auto-login next time
                                  var flickrCookie:SharedObject = SharedObject.getLocal( "FlickrServiceTest" );
                                  flickrCookie.clear();
                                  
                                  // Display a note about authentication to the user
                                  Alert.show("The application instance now considers you to be"
                                          + " logged out.  However, the application is still"
                                          + " authenticated on flickr.com until you remove it from"
                                          + " your 'Authentication list' at"
                                          + " http://www.flickr.com/services/auth/list.gne",
                                          "Logout successful",
                                          Alert.OK );
                          }
                          
                  ]]>
          </mx:Script>
          
          
          
          
          <mx:HBox width="100%">
                  
                  <mx:HBox horizontalAlign="left" width="50%" height="100%" verticalAlign="bottom">
                          <mx:Label text="Select method to call:" />
                          <mx:ComboBox id="method">
                                  <mx:dataProvider>
                                          <mx:Array>
                                                  <mx:String>flickr.blogs.getList</mx:String>
                                                  <mx:String>flickr.blogs.postPhoto</mx:String>
                                                  <mx:String>flickr.contacts.getList</mx:String>
                                                  <mx:String>flickr.contacts.getPublicList</mx:String>
                                                  <mx:String>flickr.favorites.add</mx:String>
                                                  <mx:String>flickr.favorites.getList</mx:String>
                                                  <mx:String>flickr.favorites.getPublicList</mx:String>
                                                  <mx:String>flickr.favorites.remove</mx:String>
                                                  <mx:String>flickr.groups.browse</mx:String>
                                                  <mx:String>flickr.groups.getInfo</mx:String>
                                                  <mx:String>flickr.groups.search</mx:String>
                                                  <mx:String>flickr.groups.pools.add</mx:String>
                                                  <mx:String>flickr.groups.pools.getContext</mx:String>
                                                  <mx:String>flickr.groups.pools.getGroups</mx:String>
                                                  <mx:String>flickr.groups.pools.getPhotos</mx:String>
                                                  <mx:String>flickr.groups.pools.remove</mx:String>
                                                  <mx:String>flickr.people.findByEmail</mx:String>
                                                  <mx:String>flickr.people.findByUsername</mx:String>
                                                  <mx:String>flickr.people.getInfo</mx:String>
                                                  <mx:String>flickr.people.getPublicGroups</mx:String>
                                                  <mx:String>flickr.people.getPublicPhotos</mx:String>
                                                  <mx:String>flickr.people.getUploadStatus</mx:String>
                                                  <mx:String>flickr.photos.addTags</mx:String>
                                                  <mx:String>flickr.photos.getAllContexts</mx:String>
                                                  <mx:String>flickr.photos.getContactsPhotos</mx:String>
                                                  <mx:String>flickr.photos.getContactsPublicPhotos</mx:String>
                                                  <mx:String>flickr.photos.getContext</mx:String>
                                                  <mx:String>flickr.photos.getCounts</mx:String>
                                                  <mx:String>flickr.photos.getExif</mx:String>
                                                  <mx:String>flickr.photos.getInfo</mx:String>
                                                  <mx:String>flickr.photos.getNotInSet</mx:String>
                                                  <mx:String>flickr.photos.getPerms</mx:String>
                                                  <mx:String>flickr.photos.getRecent</mx:String>
                                                  <mx:String>flickr.photos.getSizes</mx:String>
                                                  <mx:String>flickr.photos.getUntagged</mx:String>
                                                  <mx:String>flickr.photos.removeTag</mx:String>
                                                  <mx:String>flickr.photos.search</mx:String>
                                                  <mx:String>flickr.photos.setDates</mx:String>
                                                  <mx:String>flickr.photos.setMeta</mx:String>
                                                  <mx:String>flickr.photos.setPerms</mx:String>
                                                  <mx:String>flickr.photos.setTags</mx:String>
                                                  <mx:String>flickr.photos.licenses.getInfo</mx:String>
                                                  <mx:String>flickr.photos.licenses.setLicense</mx:String>
                                                  <mx:String>flickr.photos.notes.add</mx:String>
                                                  <mx:String>flickr.photos.notes.deleteNote</mx:String>
                                                  <mx:String>flickr.photos.notes.edit</mx:String>
                                                  <mx:String>flickr.photos.transform.rotate</mx:String>
                                                  <mx:String>flickr.photos.upload.checkTickets</mx:String>
                                                  <!-- <mx:String>flickr.photos.upload.upload</mx:String> -->
                                                  <mx:String>flickr.photosets.addPhoto</mx:String>
                                                  <mx:String>flickr.photosets.create</mx:String>
                                                  <mx:String>flickr.photosets.deleteSet</mx:String>
                                                  <mx:String>flickr.photosets.editMeta</mx:String>
                                                  <mx:String>flickr.photosets.editPhotos</mx:String>
                                                  <mx:String>flickr.photosets.getContext</mx:String>
                                                  <mx:String>flickr.photosets.getInfo</mx:String>
                                                  <mx:String>flickr.photosets.getList</mx:String>
                                                  <mx:String>flickr.photosets.getPhotos</mx:String>
                                                  <mx:String>flickr.photosets.orderSets</mx:String>
                                                  <mx:String>flickr.photosets.removePhoto</mx:String>
                                                  <mx:String>flickr.tags.getListPhoto</mx:String>
                                                  <mx:String>flickr.tags.getListUser</mx:String>
                                                  <mx:String>flickr.tags.getListUserPopular</mx:String>
                                                  <mx:String>flickr.tags.getRelated</mx:String>
                                                  <mx:String>flickr.urls.getGroup</mx:String>
                                                  <mx:String>flickr.urls.getUserPhotos</mx:String>
                                                  <mx:String>flickr.urls.getUserProfile</mx:String>
                                                  <mx:String>flickr.urls.lookupGroup</mx:String>
                                                  <mx:String>flickr.urls.lookupUser</mx:String>
                                                  <mx:String>flickr.test.echo</mx:String>
                                                  <mx:String>flickr.test.login</mx:String>
                                          </mx:Array>                                
                                  </mx:dataProvider>
                          </mx:ComboBox>
                          
                          <mx:Label text="method argument:" />
                          <mx:TextInput id="extraArgs" />
                          
                          <mx:Button label="Call Method" id="callMethod" click="invokeFlickrMethod();" />
                  
                  </mx:HBox>
                  
                  <mx:VBox horizontalAlign="right" width="50%">
                          <mx:HBox>
                                  <mx:Label text="Username:"         />
                                  <mx:Text id="username" text="Not logged in" />
                          </mx:HBox>
                          
                          <mx:HBox>
                                  <mx:Label text="Permission:"         />
                                  <mx:Text id="permission" text="none" />
                          </mx:HBox>
          
                          <mx:Canvas>
                                  <mx:Button id="login" label="Login" click="startLoginSequence();" />
                                  <mx:Button id="logout" label="Logout" click="processLogout();" visible="false" />
                          </mx:Canvas>
                          
                  </mx:VBox>
                  
          </mx:HBox>
          
          <mx:TextArea id="debug" width="100%" height="100%" text="" />
  </mx:Application>
  


(C) Æliens 27/08/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.