2010-07-29 7 views
2

API를 사용하여 flickr에 로그인합니다. 읽기 전용의 벌금에 액세스 할 수 있지만 사진에 태그를 추가하려면 쓰기 권한이 필요할 때 올바르게 인증 할 수없는 것 같습니다. 내가 기본 인증이 데스크톱 Flickrj Java 인증 흐름

  1. 는 FROB에게 쓰기 액세스를 요청 FROB
  2. 패스를 흐름을 알고있는 것처럼

    ,이 URL을 반환합니다. 당신이 볼 수 있듯이

  3. 전화 URL이 토큰 플리커
  4. 사용하는 모든 후속 요청
  5. 에서 토큰을받을하기 위해

내 코드는 현재

Flickr f = new Flickr(properties.getProperty(APIKEY),properties.getProperty(SECRET),t); 
System.out.println(f.toString()); 

// 1 get a frob 
AuthInterface authInterface = f.getAuthInterface(); 
String frob = authInterface.getFrob(); 
System.out.println("first frob "+frob); 

// 2 get a request URL 
URL url = f.getAuthInterface().buildAuthenticationUrl(Permission.WRITE,frob); 
System.out.println(url.toString()); 

// 3 call the auth URL 

// 4 get token 
f.getAuthInterface().getToken(frob); 

입니다 - 난 3 단계에 붙어 ?

답변

1

이 코드는 de.elmar_baumann.jpt.plugin.flickrupload.Authorization입니다. 2 단계 후에 트릭은 자바 데스크톱 응용 프로그램에서 브라우저 창과 대화 상자를 여는 것입니다. 사용자가 브라우저를 통해 로그인하면 대화 상자를 클릭하여 4 단계를 호출하고 토큰을 검색 할 수 있습니다.

나는 오류가
public boolean authenticate() { 
    try { 
     Flickr flickr = new Flickr("xx", "yy", new REST()); 
     Flickr.debugStream = false; 
     requestContext = RequestContext.getRequestContext(); 
     authInterface = flickr.getAuthInterface(); 
     frob   = authInterface.getFrob(); 
     token   = properties.getProperty(KEY_TOKEN); 
     if (token == null) { 
      authenticateViaWebBrowser(); 
     } else { 
      auth = new Auth(); 
      auth.setToken(token); 
     } 
     requestContext.setAuth(auth); 
     authenticated = true; 
     return true; 
    } catch (Exception ex) { 
     Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); 
     JOptionPane.showMessageDialog(null, Bundle.getString("Auth.Error")); 
    } 
    return false; 
} 

private void authenticateViaWebBrowser() throws Exception { 
    URL url = authInterface.buildAuthenticationUrl(Permission.DELETE, frob); 
    LargeMessagesDialog dlg = new LargeMessagesDialog(Bundle.getString("Auth.Info.GetToken.Browse", url.toExternalForm())); 
    dlg.setVisible(true); 
    Desktop.getDesktop().browse(url.toURI()); 
    JOptionPane.showMessageDialog(null, Bundle.getString("Auth.Info.GetToken.Confirm")); 
    auth = authInterface.getToken(frob); 
    token = auth.getToken(); 
    properties.setProperty(KEY_TOKEN, token); 
} 
0

이 코드는 .. 나에게 더 읽기 권한을 부여하지 그리고 그 이유를 잘 모릅니다 ...
을하지만 그렇지 않으면 내가 .. 개구리와 토큰을 가지고 그리고 그것은 작동!

 // Step 1) Get Frob 
     AuthInterface ai = f.getAuthInterface();   
     String frob = ai.getFrob(); 
     System.out.println("frob: "+frob); //--> It Works !! 

     // Step 2) URL With Permissions 
     URL uc = ai.buildAuthenticationUrl(Permission.READ, frob); 
     String request = uc.toExternalForm(); 
     uc.openConnection(); 

     // Step 3) Call URL 
     System.out.println(request); 
     URI uri = new URI(request); 
     Desktop desktop = null; 
     if (Desktop.isDesktopSupported()) 
     { 
      desktop = Desktop.getDesktop(); 
     } 

     if (desktop != null) 
     { 
      desktop.browse(uri); // Open Explorer to Confirm   
     } 
     // Sleep until accepted in the explorer. After Press enter in Console 
     BufferedReader infile = new BufferedReader (new InputStreamReader (System.in)); 
     String line = infile.readLine(); 

     // Step 4) Get a token 
     Auth atoken = ai.getToken(frob); // Get a Token with a frob 
     String stoken = atoken.getToken(); // Get a token like String 
     System.out.println("Token: "+stoken); 
     Auth au = ai.checkToken(stoken); // Check token 

     RequestContext.getRequestContext().setAuth(au); 
+0

새로운 질문이있는 경우 [질문하기] (http://stackoverflow.com/questions/ask) 버튼을 클릭하여 질문하십시오. – oers

관련 문제