桌面Flickrj Java身份验证流程

时间:2010-07-29 16:30:06

标签: java authentication flickr flickrj

我正在使用Flickrj API登录flickr。对于READ只能访问它的罚款,但我似乎无法正确授权当我需要WRITE访问权限为照片添加标签。

据我了解基本身份验证流程

  1. 得到一个frob
  2. 传递请求WRITE访问权限的frob,返回一个URL。
  3. 调用URL以接收flickr令牌
  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步?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分: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);