В настоящее время я работаю над интеграцией Twitter в приложение для Android. Я успешно его интегрировал. Однако я получаю исключение No authentication challenges found
в следующем сценарии.Нет проблем с проверкой подлинности при использовании библиотеки twitter4j
- Я использую
App-only authentication
(без входа в твиттер), чтобы получать публичные каналы из твиттера. Я получаю их успешно. - Когда я пытаюсь ответить или отредактировать или отметить его как избранное, я проверяю, был ли пользователь уже зарегистрирован или нет, если он не вошел в систему, я сначала попытаюсь войти в систему, а затем выполнить ответ или отредактировать.
- Но я получаю вышеупомянутое исключение при попытке войти в систему, поэтому я не дойду до ответа или ретвита.
Примечание: Если я не использую App-only authentication
и выбрать для входа непосредственно (не извлекая общественный канал), то он работает отлично, и я могу войти.
Ниже приводится StackTrace:
11-14 19:33:03.597: W/System.err(3305): No authentication challenges found
11-14 19:33:03.667: W/System.err(3305): Relevant discussions can be found on the Internet at:
11-14 19:33:03.667: W/System.err(3305): http://www.google.co.jp/search?q=9ddbeb3a or
11-14 19:33:03.727: W/System.err(3305): http://www.google.co.jp/search?q=937eec8d
11-14 19:33:03.747: W/System.err(3305): TwitterException{exceptionCode=[9ddbeb3a-937eec8d c8a7b39b-dc5ea0d9], statusCode=-1, message=null, code=-1, retryAfter=-1, rateLimitStatus=null, version=3.0.4}
11-14 19:33:03.797: W/System.err(3305): at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:177)
11-14 19:33:03.857: W/System.err(3305): at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:61)
11-14 19:33:03.897: W/System.err(3305): at twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:98)
11-14 19:33:03.957: W/System.err(3305): at twitter4j.auth.OAuthAuthorization.getOAuthAccessToken(OAuthAuthorization.java:145)
11-14 19:33:04.097: W/System.err(3305): at twitter4j.auth.OAuthAuthorization.getOAuthAccessToken(OAuthAuthorization.java:165)
11-14 19:33:04.107: W/System.err(3305): at twitter4j.TwitterBaseImpl.getOAuthAccessToken(TwitterBaseImpl.java:381)
EDIT:
Ниже приводится код, я использую для переключения конфигурации на основе того, зарегистрирован пользователь или нет.
private TwitterInstance(boolean withLoginConfig) {
ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
configurationBuilder
.setOAuthConsumerKey(STAConstants.TWITTER_CONSUMER_KEY);
configurationBuilder
.setOAuthConsumerSecret(STAConstants.TWITTER_CONSUMER_SECRET);
// configuration required to fetch feeds without login.
if (!withLoginConfig) {
configurationBuilder.setUseSSL(true);
// IMPORTANT: set T4J to use App-only authentication
configurationBuilder.setApplicationOnlyAuthEnabled(true);
configurationBuilder.setOAuth2TokenType(getOAuth2Token()
.getTokenType());
configurationBuilder.setOAuth2AccessToken(getOAuth2Token()
.getAccessToken());
}
Configuration configuration = configurationBuilder.build();
twitterFactory = new TwitterFactory(configuration);
twitter = twitterFactory.getInstance();
requestToken = null;
}
Я искал решение на SO и других сайтах, но не получил.
Любая помощь очень ценится.
Вы можете написать код, который вы используете для целей аутентификации. – Jhanvi
опубликовал код для справки. –