- Я видел разговоры о жестком кодировании маркера доступа, который работал бы только для этого конкретного пользователя. Я не хочу жестко кодировать что-либо, кроме ключей приложения.
"appkeys "aka consumer { key, secret }
pair разрешает вашему приложению использовать API-интерфейсы Twitter, которые не требуют аутентификации пользователя .Думайте об этом, когда вы просматриваете веб-сайт в Твиттере, не входя в систему. Следовательно, у вас будет возможность поиска, получения временных шкал и т. Д. => Только для чтения.
На случай, если вы захотите отправьте что-то назад, вам придется заставить ваше приложение делать это от имени реальной учетной записи / пользователя Twitter.Подумайте о том, что кто-то пишет клиент Twitter => его могут загрузить многие разных пользователей, поэтому для правильной работы ему необходимы две вещи:
- Быть зарегистрированным приложением Twitter => иметь
consumer { key, secret }
пара - возможность публиковать твиты / изображения от имени пользователя => иметь
access { token, secret }
пару
для получения такого доступа{токен, секретная} пара, вы должны иметь "ОК" от этого пользователя / учетной записи.
Именно здесь приходит OAuth => он отправляет пользователя на страницу подтверждения, где он нажимает «ОК, я разрешаю этому приложению опубликовать от моего имени».Затем это «ОК» преобразуется в OAuthToken
, которое может использовать ваше приложение.
Если все, что вам нужно, - это публиковать обновления от своего имени, тогда вам нужно одобрить собственное приложение Twitter и настаивать, чтобыOAuthToken
будет использоваться вашим приложением.
К сожалению, Twitter пока не поддерживает OAuth 2.0, поэтому вам придется делать больше ... Вам нужно будет сделать OAuth 1.0a.
Документация Spring Social описывает поток OAuth 1.0a здесь , где вы можете увидеть поток визуально.
Чтобы «закодировать» этот поток с помощью Spring Social API, вы должны сначала запросить пару доступа {token, value} (для этого есть удобство ConnectController ):
TwitterConnectionFactory connectionFactory =
new TwitterConnectionFactory( "consumerKey", "consumerSecret" );
OAuth1Operations oauthOperations = connectionFactory.getOAuthOperations();
OAuthToken requestToken = oauthOperations.fetchRequestToken( "https://my-callback-url", null );
String authorizeUrl = oauthOperations.buildAuthorizeUrl( requestToken, OAuth1Parameters.NONE );
response.sendRedirect( authorizeUrl );
И как только он возвращается (к вашему URL обратного вызова), вы можете использовать OAuth1Operations
, чтобы получить OAuthToken , который является именно этой парой.
// upon receiving the callback from the provider:
OAuthToken accessToken = oauthOperations.exchangeForAccessToken(
new AuthorizedRequestToken(requestToken, oauthVerifier), null);
Теперь, когда у вас есть все, что вам нужно, у вас есть выбор:
Создать шаблон Twitter из этого OAuthToken
:
String consumerKey = "..."; // The application's consumer key
String consumerSecret = "..."; // The application's consumer secret
String accessToken = accessToken.getValue();
String accessTokenSecret = accessToken.getSecret();
Twitter twitter = new TwitterTemplate( consumerKey, consumerSecret, accessToken, accessTokenSecret );
Создать подключение к Twitterобъект
Connection<Twitter> connection = connectionFactory.createConnection( accessToken );
Как только вы получите Connection
, вы можете сохранить его через ConnectionRepository
как , показанное здесь , поэтому вам не нужно проходить через получение токена доступаснова.
Вот API соединения .