Api Flickr В Приложении Для Android. Авторизация

Привет, хабралюди! Я хотел бы поделиться с вами небольшим опытом использования Flickr API в Android-приложениях и поговорить об авторизации пользователей Flickr. Который в будущем можно будет использовать, например, для отображения списка альбомов и изображений.



Регистрация заявки

Прежде всего нам необходимо получить API Key, приложения мы будем использовать в некоммерческих целях, для регистрации перейдите по ссылке.

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



API Flickr в приложении для Android. Авторизация

Нас просят ввести «Имя», «Цель» и «Соглашение о правах», мы передаем свои данные и в результате получаем API-ключ и API-секрет. Они понадобятся нам позже для формирования запроса к серверу.



API Flickr в приложении для Android. Авторизация

После этого нам нужно отредактировать некоторые данные, в этом же окне заходим в Изменить процесс аутентификации для этого приложения .



API Flickr в приложении для Android. Авторизация

Описания и логотипы нас не интересуют, вы можете вводить их по своему усмотрению.

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

В моем случае я спрашиваю appforflickr://обратный вызов .

В шляпе это будет выглядеть так:

  
  
  
  
  
  
  
  
   

.

<data android:scheme="appforflickr" android:host="callback"/> .



Тип приложения — выберите «Веб-приложение» и сохраните изменения.

Далее переходим непосредственно к созданию самого приложения.

В манифесте приложения добавляем "android.permission.ИНТЕРНЕТ" и заблокировать в результате получаем:

<Эxml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android " package="test.testflickrapi" > <uses-permission android:name="android.permission.INTERNET"/ > <application android:allowBackup="true " android:icon="@drawable/ic_launcher " android:label="@string/app_name " android:theme="@style/AppTheme " > <activity android:name=".

ui.activities.MainActivity " android:label="@string/app_name " > <intent-filter> <action android:name="android.intent.action.MAIN " /> <category android:name="android.intent.category.LAUNCHER " /> </intent-filter> <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="appforflickr " android:host="callback"/ > </intent-filter> </activity> </application> </manifest>



Создание ссылки для авторизации пользователя

Для авторизации пользователей в приложении мы запустим Activity из WebView. Но сначала давайте создадим адрес входа.

Шаблон выглядит следующим образом:

http://flickr.com/services/auth/Эapi_key=[api_key]&perms=[perms]&api_sig=[api_sig ]

[api_key] — наш ключ, полученный при регистрации приложения.

[perms] — уровень доступа к аккаунту, может принимать следующие значения:

  • чтение - разрешения на чтение личной информации
  • запись — разрешения на добавление и редактирование фотографий и информации (включая «чтение»)
  • delete — разрешения на удаление фотографий (включая «чтение» и «запись»)
[api_sig] — подпись, включает в себя Секрет полученный при регистрации приложения и список аргументов в алфавитном порядке, названия и значения.

В нашем случае API-ключ: 5744fadec815a7e8142d03901065c97b ,Секрет API: 8b2c12e80b67970b , права доступа писать , подпись представляет собой строку из:

secret + 'api_key' + [api_key] + 'perms' + [perms]

, то есть имеем: 8b2c12e80b67970bapi_key5744fadec815a7e8142d03901065c97bpermswrite и теперь вам нужно зашифровать эту строку в MD5. Для этого мы используем следующий метод:

public static final String md5SumOfString(final String s) { try { MessageDigest digest = java.security.MessageDigest.getInstance("MD5"); digest.update(s.getBytes()); byte messageDigest[] = digest.digest(); StringBuffer hexString = new StringBuffer(); for (int i = 0; i < messageDigest.length; i++) hexString.append(Integer.toHexString(0xFF & messageDigest[i])); return hexString.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return ""; }

и получаем значения [api_sig].

В результате адрес для авторизации пользователя будет выглядеть так:

http://www.flickr.com/services/auth/Эapi_key=9a0554259914a86fb9e7eb014e4e5d52&perms=write&api_sig=b8d7c1ae026d5f86f1f44944f5257f3

В onCreate() мы добавляем

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));

, где url — указанный выше адрес.

После запуска приложения мы открываем веб-страницу для ввода имени пользователя и пароля.

Если введенные данные верны, мы URL обратного вызова автоматически перенаправит на наше приложение.

К URL добавляется параметр фроб от значений, то есть в нашем случае это выглядит так:

appforflickr://callbackЭfrob=72157650137623777-b09eae52121bf8ad-130818926

Фроб необходимо, чтобы получить Токен доступа .

Давайте добавим условия в onCreate(), чтобы получить фроб:

Uri uri = getIntent().

getData(); if (uri != null) { String frob = uri.getQueryParameter("frob"); } else

Теги: #Android #flickr.com #Flickr #api #разработка Android #api

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.