· 6 years ago · Sep 18, 2019, 10:08 AM
1import com.flickr4java.flickr.Flickr;
2import com.flickr4java.flickr.FlickrException;
3import com.flickr4java.flickr.REST;
4import com.github.scribejava.apis.FlickrApi;
5import com.github.scribejava.core.builder.ServiceBuilder;
6import com.github.scribejava.core.model.OAuth1AccessToken;
7import com.github.scribejava.core.model.OAuth1RequestToken;
8import com.github.scribejava.core.model.OAuthRequest;
9import com.github.scribejava.core.oauth.OAuth10aService;
10import com.github.scribejava.core.oauth.OAuthService;
11import org.springframework.beans.factory.annotation.Value;
12import org.springframework.context.annotation.Bean;
13import org.springframework.context.annotation.Configuration;
14
15import java.io.IOException;
16import java.util.Scanner;
17import java.util.concurrent.ExecutionException;
18
19@Configuration
20public class FlickrConfig {
21
22 @Value("${flickr.apiKey}")
23 String apiKey;
24
25 @Value("${flickr.secretKey}")
26 String secretKey;
27
28 @Bean
29 public Flickr getFlickr() throws InterruptedException, ExecutionException, IOException, FlickrException {
30 Flickr flickr = new Flickr(apiKey, secretKey, new REST());
31
32 // Now we need to auth flickr.
33 //1. Add an Oauth
34 // sorry, is oathService.
35 // in this case, I just use read permission. You can choose another perm
36 OAuth10aService service = new ServiceBuilder(apiKey)
37 .apiSecret(secretKey).build(FlickrApi.instance(FlickrApi.FlickrPerm.READ));
38
39 //2. Because, Flick need you confirm permission, So, We need an confirm in command.
40 final Scanner in = new Scanner(System.in);
41
42 //3. Create oauth request token.
43 final OAuth1RequestToken requestToken = service.getRequestToken();
44
45 //4. Get auth URL to confirm with flick. and get your token
46 final String authUrl = service.getAuthorizationUrl(requestToken);
47 System.out.println(authUrl);
48 System.out.println("Paste the verifier code here:");
49 System.out.print(">>");
50 final String oauthVerifier = in.nextLine();
51
52 //5. Trade the request token and verifier for access token.
53 final OAuth1AccessToken accessToken = service.getAccessToken(requestToken, oauthVerifier);
54
55 //6. Final you need check for the flickr object
56 flickr.getAuthInterface().checkToken(accessToken);
57 return flickr;
58 }
59}