Интеграция Twitter с Android. Как показать твит без аутентификации

У меня следующий сценарий.

Мой клиент (местный телеиздатель) публикует какую-то статью и встраивает в нее твит. Идентификатор встроенного твита отправляется через API в приложение Android.

На стороне Android я интегрировал Fabric/TwitterKit, и, выполнив шаги на странице разработчиков Twitter, мне удалось показать твит в моем приложении для Android простым (признаюсь) способом (Показать опыт твитов).

Сейчас выложил приложение на Альфу и заметил одну "маленькую" проблемку :-). TwitterKit использовал мою локальную учетную запись Twitter для аутентификации и отображения твитов. Если у вас не установлено приложение Twitter или вы вышли из него, моя функция отображения твитов не будет работать.

Это TwitterLogin объяснение получения токена аутентификации TwitterKit: "Когда пытаясь получить токен аутентификации, Kit будет использовать локально установленное приложение Twitter, чтобы предложить возможность единого входа.Если Kit не может получить доступ к токену аутентификации через приложение Twitter, он возвращается к использованию веб-представления для завершения процесс OAuth. Самый простой способ аутентифицировать пользователя — использовать TwitterLoginButton внутри макета..."

Я хочу просто показать содержимое твита по заданному tweetID. Нет отправки твитов или каких-либо других действий с ним. Просто покажите данные с заданного URL. Возможно ли это без аутентификации или что мне теперь делать, чтобы текущая реализация работала без аутентификации пользователя (или с некоторой аутентификацией без единого входа внутри приложения)

Спасибо.

ОБНОВЛЕНИЕ 1:

Я создал MyApp, расширяющий класс Application, и поместил код ниже внутри метода onCreate. В теге приложения внутри файла AndroidManifest добавлена ​​строка:

AndroidManifest.xml

android:name=".MyApp"

при создании:

TwitterAuthConfig authConfig =
                new TwitterAuthConfig(DeveloperKey.TWITTER_CONSUMER_KEY, DeveloperKey.TWITTER_CONSUMER_SECRET_KEY);

        Fabric.with(this, new TwitterCore(authConfig),
                new TweetUi());

Пока это работает, но я не уверен, что эта реализация действительна. DeveloperKey.TWITTER_CONSUMER_KEY и DeveloperKey.TWITTER_CONSUMER_SECRET_KEY — это статические значения, полученные из приложения, созданного на сайте apps.twitter.com.


person bajicdusko    schedule 29.12.2014    source источник


Ответы (1)


Вам необходимо использовать аутентификацию только приложения.

Это создаст набор ключей, которые могут использоваться приложением. Он не сможет публиковать сообщения в Твиттере (поскольку с ним не связан ни один пользователь), но вы сможете читать твиты.

Если вы встроите ключи в приложение, вашему пользователю не нужно будет входить в систему.

Вся документация находится по адресу https://dev.twitter.com/oauth/application-only

person Terence Eden    schedule 29.12.2014
comment
Прошу прощения за задержку ответа. Все еще не уверен, что мне нужно использовать аутентификацию AppOnly. Я видел несколько примеров с библиотекой twitter4j, но ни одного с официальным TwitterKit, который работает с авторизацией ApplicationOnly. Пожалуйста, обратитесь к моему ОБНОВЛЕНИЮ 1 в вопросе. Это действующая процедура? - person bajicdusko; 05.01.2015
comment
да. Он должен работать. Хотя, если кто-то завладеет этими ключами, он может твитнуть из вашей учетной записи. - person Terence Eden; 05.01.2015
comment
Я не знаю, это только я, но реализация твиттера начинает очень разочаровывать. Согласно этому сообщению twittercommunity.com/t/application-only-auth- with-android/29149, авторизация Application Only с Android даже невозможна. Я очень близок к решению оставить свои потребительские ключи внутри приложения. Его сможет прочитать любой, кто распакует установочный файл моего приложения. Я установлю разрешение ReadOnly для этих ключей, чтобы он не мог публиковать твиты с его помощью. Или попытать счастья с twitter4j :) - person bajicdusko; 05.01.2015