Как работает Twitter OAuth в Android?

Я искал ответ в течение довольно долгого времени, и я признаю, что я довольно застрял. Я пытаюсь реализовать Twitter в своем приложении и нашел его несколько сложным. Кажется, это способ зарегистрировать мое приложение с Twitter (я уже сделал это) в качестве приложения для браузера. Однако я не знаю, что использовать для моего обратного вызова. Я действительно хочу просто вернуться к своей текущей деятельности в приложении и не перенаправляться на URL-адрес обратного вызова. Что я должен сказать? Я довольно застрял...

Ответы

Ответ 1

Вот как это работает... вы вызываете URL-адрес для проверки подлинности (открываете веб-браузер). URL-адрес аутентификации должен содержать URL-адрес обратного вызова. URL-адрес обратного вызова обычно выглядит следующим образом: x-your-application-name-oauth-twitter://callback (*).

Второй шаг - добавить фильтр намерения к вашему Activity (для реализации twitter auth требуется, чтобы вы знали, как работает Android (если вы не найдете учебник, который сделает все для вас, но я думаю, что не так, кажется, вам кажется, быть умным парнем, не так ли?)). Что бы вы ни делали, добавив что-то подобное в ваш манифест:

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:scheme="x-your-application-name-oauth-twitter" android:host="callback"/>
</intent-filter>

Это в основном способ сказать ОС Android: "Эй, чувак, я могу обрабатывать любой URL, который выглядит как x-your-application-name-oauth-twitter://callback". Таким образом, после аутентификации пользователя твиттер вызовет этот URL-адрес, и ваше приложение вернет элемент управления.

Обычно ваша активность должна быть создана с помощью тега android:launchMode="singleTask", тогда вы должны переопределить метод onNewIntent вашей активности, который будет вызываться после того, как ваше приложение снова получит элемент управления. Внутри Intent вы найдете информацию о обратном вызове.

(*) Создание URL-адреса, который вы должны запустить (и который позволит пользователям аутентифицироваться), как-то сложно. OAuth - это хороший, но довольно сложный для изучения стандарт. Таким образом, вы можете использовать сторонние библиотеки, которые помогут вам в этом. Например, вы можете использовать java-библиотеку Oauth Signpost. Тем не менее, я бы рекомендовал вам придерживаться библиотеки twitter4j, которая поможет вам с OAuth, а также позволит вам взаимодействовать с API Twitter.