이제 소스를 보도록 합시다.

아....근데 다른 언어를 이용해서 업로더를 구현해보신 분 계신가요? 플렉스에서는 이상하게 제목을 한글로 입력해서 업로드를 해버리면 업로드가 안되더군요.
MD5함수를 수정하면 가능합니다. ^^
이 부분은 좀 더 삽질을 해봐야할 부분인 것 같군요.
우선 영어는 뭐 잘 되니까-_-;

[code]
<mx:Script>
  <![CDATA[
   import com.adobe.webapis.flickr.methodgroups.Upload;
   import mx.controls.Alert;
   import flash.net.navigateToURL;
   import com.adobe.webapis.flickr.AuthPerm;
   import com.adobe.webapis.flickr.events.FlickrResultEvent;
   import com.adobe.webapis.flickr.methodgroups.Auth;
   import com.adobe.webapis.flickr.FlickrService;
 
   public var apikey:String = "해당API키";
   public var secretkey:String = "해당비밀키";
   public var flickrService:FlickrService;
   public var frobResult:FlickrResultEvent;
   public var frob:String = new String();
   public var token:String = new String();
   public var fileRef:FileReference;
   
   public function Authentication():void {
    flickrService = new FlickrService(apikey);
    flickrService.secret = secretkey;
    flickrService.addEventListener(
        FlickrResultEvent.AUTH_GET_FROB, getFrobResponse);
    flickrService.auth.getFrob();
   }
   
   public function getFrobResponse(event:FlickrResultEvent):void {
    if (event.success) {
     frob = String(event.data.frob);
     var auth_url:String = flickrService.getLoginURL(frob, AuthPerm.WRITE);
     navigateToURL(new URLRequest(auth_url), "_blank");
     Alert.show( "인증하기위한 브라우저가 뜰꺼에요."
        + "로그인한다음에 OK버튼을 누르세요^^",
        "인증",
        Alert.OK | Alert.CANCEL,
        null,
        onCloseAuthWindow );
    }
   }
   
   private function onCloseAuthWindow( event:* ):void {
    if ( event.detail == Alert.OK ) {
     flickrService.addEventListener(
        FlickrResultEvent.AUTH_GET_TOKEN, getTokenResponse );
     flickrService.auth.getToken( frob );
    }
   }

   private function getTokenResponse( event:FlickrResultEvent ):void {
    if ( event.success ) {
     token = event.data.auth.token;
     flickrService.token = token;
    } else {
     Alert.show("인증에 실패했습니다.");
    }
   }
   
   public function findFile():void {
    if (token == "") {
     Alert.show("인증부터 하세요!");
     return;
    }
    fileRef = new FileReference();
   
    try {
        fileRef.addEventListener(Event.SELECT, selectHandler);
        fileRef.addEventListener(Event.COMPLETE, completeHandler);
        fileRef.addEventListener(
           DataEvent.UPLOAD_COMPLETE_DATA, onUploadCompleteData);
        var success:Boolean = fileRef.browse();
       } catch (error:Error) {
           trace("Unable to browse for files.");
       }
   }
   
   public function selectHandler(event:Event):void {
    var uploader:Upload = new Upload(flickrService);
    uploader.upload(fileRef);
   }
   
   public function checkTokenResponse(event:FlickrResultEvent):void {
    Alert.show(event.data.auth.token);
   }
   
   public function completeHandler(event:Event):void {
    trace("업로드 완료");
   }
   
   public function  onUploadCompleteData(event:DataEvent):void {
    Alert.show(event.data);
   }
  ]]>
 </mx:Script>
 
 <mx:Button label="인증" click="Authentication();"/>
 <mx:Button label="파일업로드" click="findFile();" />
[/code]

오.....간단합니다.
아... apikey secretkey 에는 각각 발급받은 키를 넣어주세요 ^^
인증이라는 버튼이 있는데 누르게 되면 Authentication이라는 메소드를 호출합니다.
FlickrService라는 클래스가 있는데 apikey를 인자로 받아서 생성합니다.
그러면 이놈으로 인증이 필요없는 API를 다 호출할 수 있습니다 ^^
flickrService.auth.getFrob(); 이런식으로 Frob을 얻어오고!
navigateToURL로 브라우저를 띄워서 인증url로 이동을 시킨 후 로그인을 하게 되면
flickrService.auth.getToken( frob ); 으로 인해 토큰을 가져오게 됩니다.
토큰만 가져오면 다 끝납니다-_-; 이걸로 권한에 관한 건 다할 수 있어요 ^^

이거뭐 플렉스로 해도 될 것 같아요. 안해봤는데 될 것 같아요-_-;

파일업로드 버튼을 클릭하면 파일선택창이 뜨는데 이미지사진 아무거나 선택해서 업로드하면 돼요 ^^
(참고로 이미지파일도 한글이면 안돼요. 영어로 바꿔서 선택하세요 ^^)
FileReference 요놈도 설명해야하는 나중에-_-;
되는 거 증명동영샷~-_-; (실은....좀 심심해서-_-)


 
Posted by 머드초보

댓글을 달아 주세요

  1. 안녕하세요 2008.01.29 03:22  댓글주소  수정/삭제  댓글쓰기

    flickr 매쉬업 해보려다가 여기까지 오게 되었는데요 flickr 라이브러리에서 Upload 부분을 수정하셨다고 하셨는데 죄송하지만 그 수정본좀 받아 볼 수 있을까요? 올려주신 swc 를 사용하면 upload 가 잘 되긴하는데 한글문제가 있어 md5 부분을 수정하려고 하는데요 코드.구글 에 있는 as3.0flickr 라이브러리 소스를 직접 수정하니 invalid signature 오류가 계속 뜨네요 ... md5 해쉬를 어도비 core lib 에 있는걸 써도 마찬가지로요 ... as3.0 라이브러리 그룹에 patch 내용분이 있어 거기에 맞춰 수정해도 똑같네요 ㅠㅠ 당췌 무슨 문제인지 가능하시다면 swc 만들기전 src 파일좀 부탁드리겠습니다 .

    제 메일은 neth2000@lycos.co.kr 입니다

    꼭좀 부탁드립니다~!

    • BlogIcon 머드초보 2008.01.29 08:25  댓글주소  수정/삭제

      맨 위에다가 써놨어요 ^^ 저도 한글이 안돼서요 ^^
      그리고 메일 드렸어요 ^^ 반갑네요.
      저처럼 flex로 flickr 매쉬업을 삽질하시는 분이 계시다니 ㅠ

  2. 안녕하세요 2008.01.29 11:16  댓글주소  수정/삭제  댓글쓰기

    머드초보님 답장 감사합니다~!!
    일단 정말 감사드리구요 ~! 한글 문제를 해결했습니다.~!
    정말 몇일을 이것땜에 삽질했는지 모르겠네요 ...
    문제는 메일로 말씀 드린것 처럼 MD5 가 utf-8 을 지원하지 않는 것이어서 그렇습니다 .
    core.lib 의 MD5 대신에 utf-8을 지원하는 MD5를 사용하시면 될 것 같습니다. 방금 테스트 해봤는데 잘 돼네요
    파일은 Class 로 정리 해서 나중에 메일로 보내드릴게요 ~ ^^
    .. file name 이거 하나 땜에 그 고생을 했다니 ㅠㅜ 진작에 물어볼걸 그랬나봐여 ㅋ

    • BlogIcon 머드초보 2008.01.29 13:13  댓글주소  수정/삭제

      우와! 안녕하세요님 최고에요 ^^
      게다가 알려주신다니 너무 감사하네요 ^^
      core.lib에 있는 MD5메소드가 UTF-8을 지원안하는것이었군요 ^^

  3. BlogIcon eirene 2008.05.08 09:44  댓글주소  수정/삭제  댓글쓰기

    헉.. MD5 클래스가 UTF-8 지원하게 하려면 어떻게 해야 하나요..;;; 털썩...+_+

    • 머드초보 2008.05.08 13:16  댓글주소  수정/삭제

      앗~ 에이레네님 반갑습니다^^
      저 위에 안녕하세요님이 MD5클래스를 다시 만들어주셨어요^^
      UTF-8을 지원하는 걸루 ^^
      고걸로 쓰면 되는데...제가 MD5를 이해를 잘 못해서-_-;

  4. BlogIcon eirene 2008.05.08 13:15  댓글주소  수정/삭제  댓글쓰기

    헉.. http://pajhome.org.uk/crypt/md5/ 여기서 해결했습니다 ㅋㅋㅋ ^^

    • 머드초보 2008.05.08 13:17  댓글주소  수정/삭제

      오....자바스크립트네요 ^^
      근데 실시간으로 아래 댓글이 달리네요 ^^

  5. BlogIcon eirene 2008.05.08 13:34  댓글주소  수정/삭제  댓글쓰기

    아 네 그러게요.. ㅋㅋ 자바스크립트 버전은 어차피 액션스크립트 버전과 내용상 차이가 없어서;; 함수 하나 추가하는 걸로 해결했습니다.. 저도 MD5 알고리즘을 잘 몰라서 ㅠㅠ 찾느라 욕 봤네요 ㅎㅎ ㅠ

  6. BlogIcon eirene 2008.05.08 13:38  댓글주소  수정/삭제  댓글쓰기

    테스트해 본 결과.. 인증은 어플리케이션당 한번만 필요하므로 어플리케이션을 실행할 때마다 인증받기 보다는 처음에 최초 실행할 때만 인증받고 나중에는 로컬 디비에서 토큰을 가져오는 방식이 좋을 거 같네요 ^^ me2day 매쉬업 만든다고 자료 찾아보다가 여기까지 왔네여 ㅎㅎ

    • 머드초보 2008.05.08 21:32  댓글주소  수정/삭제

      me2day도 md5로 하나보네요.
      게다가 flickr와 같이 한글과 md5문제가 있었나보군요^^
      우와 어떤 것을 만드시는지 기대되는데요? ^^

  7. BlogIcon eirene 2008.05.08 22:41  댓글주소  수정/삭제  댓글쓰기

    me2day 매쉬업을 만들면서 동시에 flickr 오픈 api랑 유튜브와도 연동하는;;; 잡스러운 걸 만들고 있어요... 언제 다 만들게 되면;; 알려드릴께요... 함수추가하는 거는 위에 링크 보시면 일반 스트링을 UTF-8로 바꾸는 함수가 하나 있어요... 그걸 액션스크립트 버전 MD5.as 에 추가하신 담에;;; (데이터 타입은 알아서;;; ) hash() 메소드인가에서 파라미터로 넘겨받은 스트링을 그 함수를 한번 걸쳐서 컨버팅하면 됩니다 ㅋㅋㅋ
    me2day도 md5를 쓰고 있기는 한데 아이디/비번이 다 영문 내지 숫자라 한글 문제는 없었습니다;;; 플리커가 문제였습죠 ㅠㅠ

    • 머드초보 2008.05.09 18:04  댓글주소  수정/삭제

      오 그렇군요 ^^
      어떤 매쉬업이 나올지 궁금하네요 ^^
      플리커API는 언제쯤 업데이트가 될지 궁금하군요 ^^
      신경 안쓰는 것 같아요 ^^

  8. BlogIcon eirene 2008.05.12 00:42  댓글주소  수정/삭제  댓글쓰기

    http://joshy21.just4fun.co.kr/Me2Wiz.air 에 지금까지 개발된 걸 배포하고 있습니다 ㅋㅋ 간단히 me2day에서 바로 로컬 이미지 플리커로 업로드해서 url 받아서 드래그 선택된 글자와 맵핑시키는 기능까지 구현돼 있습니다.. (이미지 링크시킬 글자를 마우스 드래그로 먼저 선택후 이미지 삽입 버튼 눌러서 이미지 고르면 상황 종료!) ㅋㅋ 로그인할 때 아이디는 me2day 아이디, 비번은 사용자 키;;;를 입력하면 됩니다... 플리커 인증은 최초 한번만 받고 그 다음부터는 로컬 디비에서 토큰을 가져오도록 하는 방식을 썼습니다 ^^

    플리커 api는 farm도 제공 안하고 utf-8 md5도 제공 안하고 upload도 제공 안하는 등 그 자체로는 제대로 쓸 수 없는 부분이 많더군여.. 그래서 이번에 이것들을 제가 모두 수정했습니다 ㅠㅠ 필요하신 부분 있으면 말씀하세요 ^^

    • 머드초보 2008.05.12 23:28  댓글주소  수정/삭제

      미투데이 로그인 하라고 나오는데요-_-;
      아이디하고 암호에 뭐라고 쳐야하는거죠?-_-;
      로그인이 안돼요 ㅠㅠ

  9. BlogIcon eirene 2008.05.12 23:30  댓글주소  수정/삭제  댓글쓰기

    암호에는 사용자 키ㅠㅠ를 넣어야 돼요 ^^ 로그인하고 환경설정에 보시면;;; 사용자 키가 있어요 ㅠㅠ

    • 머드초보 2008.05.14 08:23  댓글주소  수정/삭제

      아 그렇군요! 미투데이를 제가 안써봐서 그런데 그냥 댓글로 글을 쓰는건가요? ^^ 신기하네 ^^

  10. inee82 2009.11.10 17:40  댓글주소  수정/삭제  댓글쓰기

    작성하신 포스트 잘보았습니다.

    저도 요즘 플리커 업로드를 활용해보려고 하고 있는데, 한가지 문제가 자꾸 걸려서 질문 합니다.

    인증토큰까지는 잘 받아집니다. 문제는 받아둔 인증토큰을 이용하여, 사진을 올릴려고 할때, api_sig가 자꾸 문제가 생깁니다.

    invalid signature라고 뜹니다. 해당 서명을 얻기위해 MD5조합한 문장을 보여 드리겠습니다. 한줄로 나열되다 보니 복잡할지도 모르겠네요.

    비밀키 : 4d4263a0de88f921
    api_key : 239df1a5f435719c37d43c03c1860c7e
    auth_token : 72157622641849993-baab3b3caa50f1e7
    content_type = 1
    description = ccc
    hidden = 1
    is_family = 0
    is_friend = 0
    is_public = 1
    safety_level = 1
    tags = bbb
    title = aaa

    위 문장을 MD5하기위해 정리한경우엔

    4d4263a0de88f921api_key239df1a5f435719c37d43c03c1860c7eauth_token72157622641849993-baab3b3caa50f1e7content_type1descriptionccchidden1is_public1safety_level1tagsbbbtitleaaa

    와 같은 문장입니다. 이것을 MD5하여 api_sig에 넣어줬었는데...에러가....조언좀 구해볼수 있을까요?

    • 머드초보 2009.11.15 19:19  댓글주소  수정/삭제

      안녕하세요~
      오래전에 삽질한거라 기억이.....잘 안납니다만....
      죄송합니다 ㅠㅠ