Статьи

Совет: аутентификация с помощью Twitter и Fabric

Пользователи, которые только что загрузили ваше Android-приложение, будут намного счастливее, если вы позволите им войти в систему с помощью популярной службы социальных сетей вместо того, чтобы просить их заполнить регистрационную форму. В этом кратком совете вы узнаете, как разрешить своим пользователям входить в ваше приложение с помощью своих учетных записей Twitter.

Чтобы следовать, у вас должно быть настроено следующее:

Fabric — это платформа Twitter для разработки мобильных приложений. Он предоставляет набор инструментов, которые делают мобильную разработку более простой и оптимизированной. Сюда входят отчеты о сбоях, бета-рассылка, мобильная аналитика и т. Д. Если у вас еще нет учетной записи Fabric, вам нужно будет запросить приглашение и подождать один или два дня.

Любое приложение, которое должно взаимодействовать с API-интерфейсами Twitter, должно быть зарегистрировано с помощью консоли управления приложениями Twitter . Используйте вашу учетную запись Twitter, чтобы войти.

Нажмите на кнопку « Создать новое приложение» и заполните форму. Введите значимые значения в поля « Имя» и « Описание» , поскольку они будут показаны пользователям вашего приложения. Для этого урока нам не понадобится URL-адрес веб-сайта и обратного вызова , но вы не можете оставить их пустыми. Если у вас есть собственный сайт, вы можете использовать его адрес здесь. Если вы этого не сделаете, вы можете просто ввести http://example.com .

Создать приложение

Примите соглашение и отправьте форму. Ваше приложение теперь зарегистрировано.

Перейдите на вкладку « Ключи и жетоны доступа » и запишите свой Ключ потребителя и Секрет потребителя . Они понадобятся нам позже.

Запишите ключ потребителя и секрет потребителя

Войдите в свою учетную запись Fabric и загрузите плагин для Android Studio.

Скачать Fabric для Android Studio

После завершения загрузки запустите Android Studio и выберите « Настройка»> «Подключаемые модули» .

Установить Fabric для Android Studio

Нажмите кнопку « Установить плагин с диска» и выберите только что загруженный файл. После установки вы сможете увидеть Fabric для Android Studio в списке плагинов.

Установить Fabric для Android Studio

Создайте новый проект (или откройте существующий) и щелкните значок Fabric. Войдите в свою учетную запись Fabric и выберите Twitter, чтобы установить Twitter Kit для своего проекта.

Выберите Twitter Kit

Поскольку мы будем использовать Twitter Kit только для входа в Twitter, выберите « Войти через Twitter» на следующем экране.

Заинтересованы только в входе через Twitter

Наконец, вам будет показан код изменений, которые необходимо внести в ваш проект. Сначала вы увидите изменения, которые необходимо внести в файл build.grade . Вы можете просто скопировать и вставить эти изменения.

Обновите файл buildgradle

Далее, когда вы выберете вкладку для AndroidManifest.xml , вы увидите, что необходимо сделать два дополнения:

  • Для взаимодействия с серверами Twitter необходимо запросить разрешение android.permission.INTERNET .
  • Автоматически сгенерированный ключ API должен быть упомянут в форме meta-data . Опять же, вы можете просто скопировать и вставить код, показанный плагином.

Вы увидите, что в каталоге вашего приложения был создан новый файл с именем fabric.properties . Откройте файл и добавьте к нему тот же ключ API, как показано ниже.

1
apiKey=21212qu6q5izhayqwywqwz1ghyuiopqwq211wqqwq12341

В этом уроке мы создадим очень простое действие, которое отображает кнопку входа в систему и TextView которое отображает результат попытки входа в систему.

Создайте новый макет XML с именем login_activity.xml в каталоге res / layout . Добавьте TwitterLoginButton используя следующий фрагмент кода:

1
2
3
4
5
<com.twitter.sdk.android.core.identity.TwitterLoginButton
       android:id=»@+id/twitter_login_button»
       android:layout_width=»wrap_content»
       android:layout_height=»wrap_content»
       android:layout_centerInParent=»true»/>

Затем добавьте TextView для отображения результатов попытки входа в систему.

1
2
3
4
5
6
7
8
<TextView
       android:layout_width=»wrap_content»
       android:layout_height=»wrap_content»
       android:id=»@+id/status»
       android:layout_alignParentTop=»true»
       android:layout_alignParentLeft=»true»
       android:textSize=»20sp»
       />

Создайте новый класс Java, который расширяет класс Activity и переопределяет его метод onCreate . Используйте setContentView для использования макета XML, который мы создали на предыдущем шаге.

Получите виджеты, определенные в XML, используя метод findViewById . Вы можете оставить TextView пустым, но я собираюсь использовать метод setText и отобразить String надписью «Status: Ready» .

На этом этапе ваш класс должен иметь следующий код:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
public class LoginActivity extends Activity {
 
    private TwitterLoginButton loginButton;
    private TextView status;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        setContentView(R.layout.login_activity);
 
        loginButton = (TwitterLoginButton)findViewById(R.id.twitter_login_button);
        status = (TextView)findViewById(R.id.status);
        status.setText(«Status: Ready»);
    }
}

Когда вы снова щелкните значок плагина и перейдете на вкладку « Начать активность» , вы найдете код, который необходимо добавить для инициализации Fabric. Скопируйте и вставьте этот код в метод onCreate перед вызовом setContentView .

1
2
TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
Fabric.with(this, new Twitter(authConfig));

Плагин генерирует свои собственные значения для ключа потребителя и секрета потребителя. Хотя вы можете использовать эти значения, мы будем использовать значения, которые мы получили, когда ранее регистрировали наше приложение в консоли управления приложениями Twitter. Код для использования этих значений должен выглядеть следующим образом:

1
2
private static final String TWITTER_KEY = «qweYTYiqer5tTeqiq1»;
private static final String TWITTER_SECRET = «wuquUUwy1626661719qw8wwWQHEJQ»;

Нажатие на кнопку входа запускает внешнюю Activity которая возвращает результат. Чтобы получить этот результат, переопределите метод onActivityResult в Activity и передайте полученные аргументы методу onActivityResult кнопки:

1
2
3
4
5
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    loginButton.onActivityResult(requestCode, resultCode, data);
}

Чтобы обработать результат попытки входа в систему, вы должны создать пользовательский Callback . Создайте внутренний класс с именем LoginHandler, который расширяет Callback<TwitterSession> , и переопределите все его абстрактные методы.

Имена методов этого класса очень интуитивно понятны. В случае успешного входа в систему вызывается метод success . В противном случае вызывается метод failure .

01
02
03
04
05
06
07
08
09
10
11
private class LoginHandler extends Callback<TwitterSession> {
    @Override
    public void success(Result<TwitterSession> twitterSessionResult) {
 
    }
 
    @Override
    public void failure(TwitterException e) {
 
    }
}

Чтобы TwitterLoginButton использовал этот пользовательский обратный вызов, в методе onCreate класса Activity передайте экземпляр LoginHandler кнопки.

1
loginButton.setCallback(new LoginHandler());

В случае успешной попытки входа в систему, отобразите имя вошедшего в систему пользователя и токен авторизации. Оба значения доступны из поля данных Result<TwitterSession> . Чтобы получить имя пользователя, вошедшего в систему, используйте getUsername . Аналогично, для получения токена аутентификации используйте getAuthToken . Добавьте следующий код в метод success :

1
2
3
4
5
6
7
String output = «Status: » +
        «Your login was successful » +
        twitterSessionResult.data.getUserName() +
        «\nAuth Token Received: » +
        twitterSessionResult.data.getAuthToken().token;
 
status.setText(output);

В случае неудачной попытки входа в систему отобразите сообщение «Ошибка входа» . Добавьте следующее к методу failure :

1
status.setText(«Status: Login Failed»);

Определите Activity вы только что создали в манифесте вашего проекта. Если это первая Activity вашего приложения, создайте фильтр намерений, чтобы он отвечал на android.intent.action.MAIN . Добавьте следующий код в ваш файл:

1
2
3
4
5
6
<activity android:name=».LoginActivity»>
    <intent-filter>
        <action android:name=»android.intent.action.MAIN»/>
        <category android:name=»android.intent.category.LAUNCHER»/>
    </intent-filter>
</activity>

Ваше приложение готово к запуску. Когда вы создадите и запустите его на своем Android-устройстве, вы увидите следующее окно:

Если вы нажмете кнопку входа, вы будете перенаправлены в Twitter. Обратите внимание, что имя и описание приложения, которые вы указали в первом шаге этого руководства, отображаются на этой странице.

Когда вы нажимаете кнопку « Авторизовать приложение» , попытка входа в систему считается успешной, и вы перенаправлены обратно в свое приложение. Вы увидите, что TextView обновлен, чтобы показать имя пользователя и токен авторизации.

В этом кратком совете вы узнали, как разрешить пользователям вашего приложения входить в систему с помощью Twitter. Вы также узнали, как установить плагин Fabric для Android Studio и как использовать его для добавления Twitter Kit в ваш проект. Чтобы узнать больше о Fabric и Twitter Kit, обратитесь к документации Twitter Kit для Android .