Чтобы совершать аутентифицированные звонки с помощью flickrj api, вам нужен, помимо вашего apiKey и секретного кода, третий код, токен .
Мы получаем токен с помощью однократного первого вызова, а затем с токеном в руке вы можете просто использовать классы API, как вы ожидаете.
Если вы когда-либо использовали клиент flickr для iOS / Android, вы поймете это: при первом использовании приложения оно отправляет вам URL-адрес, чтобы вы могли его авторизовать. Когда вы авторизуете его, он получает ключ token , и его можно использовать. Без этого его нет. То же самое для вашего Java-приложения.
Я использовал этот пример реализации для аутентификации первого шага, с несколькими изменениями, хотя, поскольку я работаю в приложении Spring MVC, а не в настольном приложении.
Помните, что вы запускаете его только один раз, и единственное, что вам нужно, это получить ключ токена.
https://github.com/mohlendo/flickrj/blob/master/examples/AuthExample.java
Строка 55:
frob = authInterface.getFrob();
Единственная цель лягушки - использовать ее для создания URL аутентификации, см. Строку 60:
URL url = authInterface.buildAuthenticationUrl(Permission.DELETE, frob);
Я сделал это в весеннем приложении MVC, а не в настольном приложении, поэтому после строки 60 я вместо этого напечатал URL-адрес System.out, а затем на минуту остановил программу с Thread.sleep(60000);
Это дало мне достаточно времени, чтобы скопировать и вставить URL-адрес из моей консоли в браузер и нажать «ОК, разрешить моему приложению использовать мою учетную запись flickr».
Сразу после этого, когда программа возобновила работу, все, что меня волновало, это строка 70, которая выводит токен на консоль.
С токеном в руке авторизация завершена, и я был настроен на использование API-интерфейса Flickrj.
Имея 3 ключа в руках (apiKey, secret, token), вот мой класс Service со статическим методом для создания объекта Flickr.
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.xml.parsers.ParserConfigurationException;
import com.aetrion.flickr.Flickr;
import com.aetrion.flickr.REST;
import com.aetrion.flickr.RequestContext;
import com.aetrion.flickr.auth.Auth;
import com.aetrion.flickr.auth.Permission;
import com.aetrion.flickr.util.IOUtilities;
public class FlickrjService {
private static Flickr flickr;
public static Flickr getFlickr() throws ParserConfigurationException, IOException {
InputStream in = null;
Properties properties;
try {
in = FlickrjService.class.getResourceAsStream("/flickrj.properties");
properties = new Properties();
properties.load(in);
} finally {
IOUtilities.close(in);
}
flickr = new Flickr(properties.getProperty("flickrj.apiKey"), properties.getProperty("flickrj.secret"), new REST("www.flickr.com"));
RequestContext requestContext = RequestContext.getRequestContext();
Auth auth = new Auth();
auth.setPermission(Permission.READ);
auth.setToken(properties.getProperty("flickrj.token"));
requestContext.setAuth(auth);
Flickr.debugRequest = false;
Flickr.debugStream = false;
return flickr;
}
}