Статьи

Интеграция социального API в Android: доступ к социальному профилю с помощью CloudRail

Интеграция социального API является важным аспектом при разработке приложения для Android. Большую часть времени нам приходится подключаться к нескольким социальным сетям, и необходимо использовать определенный SDK. С интеграцией CloudRail Social API можно использовать только одну библиотеку API и подключаться к нескольким социальным сетям. Это очень интересно и полезно, и, кроме того, этот API бесплатный.

Прежде всего, есть несколько сценариев, в которых полезно получить профиль социального пользователя, чтобы пользователю не приходилось снова вставлять свою личную информацию. Следовательно, в этом посте шаг за шагом описывается, как использовать интеграцию с социальным API и как получить пользовательские профили социальных сетей с помощью нескольких строк кода. Без CloudRail Social API мы должны использовать разные SDK для социальных платформ (например, Twitter, Facebook и т. Д.), И это очень раздражает.

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

Окончательный результат показан ниже:

android_social_profile-576x1024

Настройка библиотеки интеграции CloudRail Social API

Первым шагом является создание андроид-проекта с использованием Android studio. Когда проект готов, мы добавляем зависимость в файл Gradle:

1
2
3
4
5
dependencies {
 compile 'com.android.support:appcompat-v7:24.2.1'
 compile 'com.cloudrail:cloudrail-si-android:2.7.2'
 compile 'com.android.support:design:24.2.1'
}

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

Мы осуществим этап входа в систему с помощью службы Android и, более подробно, Android IntentService , чтобы у нас не было проблем с ANR. Служба отправляет информацию после входа в систему, используя локальный приемник вещания.

Интеграция с социальным API

Ниже приведен набор параметров конфигурации для использования с различными социальными сетями. Как вы заметите, «тяжелая» работа заключается в настройке приложения, чтобы оно могло получить доступ к социальным профилям. У каждой социальной сети есть свои шаги по настройке. Как только приложение настроено, социальные API очень просты в использовании. Эти шаги описаны ниже.

Интеграция с социальным API Facebook

Перед использованием интеграции Facebook в Android необходимо авторизовать наше приложение. Это подразумевает несколько шагов:

facebook_create_app

Следующим шагом является добавление функции входа в Facebook:

facebook_app_setup

Наконец, в конце этого этапа настройки у нас есть ключи аутентификации:

facebook_app_key

Это все. Мы готовы использовать логин Facebook и получить профиль пользователя:

1
2
3
4
5
private Profile getFacebookProfile() {
  Log.d("Prf", "Facebook Profile");
  Profile profile = new Facebook(this, "xxxxxx", "yyy");
  return profile;
}

Интеграция с Google plus Social API

Чтобы наше приложение получило профиль пользователя Google plus, нам нужно выполнить несколько шагов настройки с помощью консоли Google :

  1. Настройте проект

android_google_api_project

2. Создайте учетные данные

cloudrail_oauth

3. Получить ключи

android_google_plus_keys

Хорошо, вот и все !!

1
2
3
4
5
private Profile getGoogleProfile() {
 Log.d("Prf", "Google Profile");
 Profile profile = new GooglePlus(this, "153867151354-xx","yy");
 return profile;
}

Twitter Социальная интеграция API

Таким же образом, мы можем использовать социальный API Twitter, перейдя в консоль разработчика Twitter и создав приложение для Twitter:

android_twitter_app_config-1024x511

и после завершения настройки вы получите

twitter_app_params_oauth

В разделе « Ключи и токены доступа » у вас есть токены, которые можно использовать внутри вашего приложения:

1
2
3
4
5
private Profile getTwitterProfile() {
  Log.d("Prf", "Twitter Profile");
  Profile profile = new Twitter(this, "xxx",   "yyy");
  return profile;
}

Github Social API интеграция

То же самое работает с Github, перейдя на консоль github :

android_profile_github_setup

и наконец:

1
2
3
4
5
private Profile getGithubProfile() {
 Log.d("Prf", "Github Profile");
 Profile profile = new GitHub(this, "xxx", "yyy");
 return profile;
 }

Интеграция социального профиля в LinkedIn

Последняя социальная сеть — Linkedin .

android_linkedin_profile

Для получения профиля Linkedin мы используем:

1
2
3
4
5
private Profile getLinkedinProfile() {
 Log.d("Prf", "Linkedin Profile");
 Profile profile = new LinkedIn(this, "xxxx", "yyy");
 return profile;
 }

В конце вы можете заметить, что Social API использует универсальный интерфейс под названием Profile, и мы можем использовать его для единого доступа к нескольким социальным платформам . Используя этот интерфейс, приложение Android может получить всю информацию о профиле в социальных сетях. Мы рассмотрим это ниже.

Сборка приложения для Android

Теперь, когда мы знаем, как получить доступ к профилям в социальных сетях, пришло время создать приложение. Давайте создадим MainActivity.java который обрабатывает пользовательский интерфейс и запускает LoginService, чтобы выполнить вход в систему и получить профиль пользователя. Активность показана ниже:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public class MainActivity extends AppCompatActivity {
 
private ResponseReceiver receiver;
 
@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  // use your key
  CloudRail.setAppKey("57f669f076b9451e6xxxxx");
  Button btnFbk = (Button) findViewById(R.id.btnFbk);
  Button btnGp = (Button) findViewById(R.id.btnGoo);
  Button btnTwi = (Button) findViewById(R.id.btnTwitter);
  Button btnLnk = (Button) findViewById(R.id.btnLink);
  Button btnLGit = (Button) findViewById(R.id.btnGithub);
 
  registerReciever(); // We register the receiver to get profile info
 
  btnFbk.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View view) {
    startLoginService(SocialProfile.FACEBOOK);
   }
  });
 
  btnGp.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View view) {
     startLoginService(SocialProfile.GOOGLE_PLUS);
   }
  });
  // more social buttons
 }
 
 // Start the service, passing the social network selected
 private void startLoginService(SocialProfile profile) {
  Intent i = new Intent(this, LoginService.class);
  i.putExtra(LoginService.PROFILE_INFO, profile );
  startService(i);
 }
...
}

Приемник, в то же время, является внутренним классом, который обрабатывает входящий запрос Intent, поступающий от LoginService:

01
02
03
04
05
06
07
08
09
10
11
12
public class ResponseReceiver extends BroadcastReceiver {
  public static final String ACTION = "com.survivingwithandroidp.PROFILE";
 
  @Override
  public void onReceive(Context context, Intent intent) {
    Log.d("Prf", "Receive info");
    String fullName = intent.getStringExtra("fullName");
    String email = intent.getStringExtra("email");
    String url = intent.getStringExtra("url");
    createDialog(fullName, email, url);
  }
}

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

И когда информация профиля готова, приложение открывает диалоговое окно, показывающее детали.

android_social_profile_github-576x1024

В этом примере показан профиль Github.

Наконец, исходный код LoginService.java :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public class LoginService extends IntentService {
    public static String PROFILE_INFO = "profile_info";
 
    public LoginService() {
        super("LoginService");
    }
 
    @Override
    protected void onHandleIntent(Intent intent) {
        Log.d("Prf", "Login service");
        SocialProfile socialProfile = null;
 
        Profile profile = null;
 
        if (intent != null)
            socialProfile = (SocialProfile) intent.getSerializableExtra(LoginService.PROFILE_INFO);
 
        switch(socialProfile) {
            case FACEBOOK:
               profile = getFacebookProfile();
                break;
            case GOOGLE_PLUS:
                profile = getGoogleProfile();
                break;
            case TWITTER:
                profile = getTwitterProfile();
                break;
            case LINKEDIN:
                profile = getLinkedinProfile();
                break;
            case GITHUB:
                profile = getGithubProfile();
                break;
        }
 
 
        String fullName = profile.getFullName();
        String email = profile.getEmail();
        String url = profile.getPictureURL();
 
        sendBroatcast(fullName, email, url);
    }

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