Привет, хабралюди! Я хотел бы поделиться с вами небольшим опытом использования Flickr API в Android-приложениях и поговорить об авторизации пользователей Flickr. Который в будущем можно будет использовать, например, для отображения списка альбомов и изображений.
Регистрация заявки
Прежде всего нам необходимо получить API Key, приложения мы будем использовать в некоммерческих целях, для регистрации перейдите по ссылке.
Нас просят ввести «Имя», «Цель» и «Соглашение о правах», мы передаем свои данные и в результате получаем API-ключ и API-секрет. Они понадобятся нам позже для формирования запроса к серверу.
После этого нам нужно отредактировать некоторые данные, в этом же окне заходим в Изменить процесс аутентификации для этого приложения .
Описания и логотипы нас не интересуют, вы можете вводить их по своему усмотрению.
В поле «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-ключ: 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
-
Легко Загрузить Youtube На Мой Ноутбук Apple
19 Oct, 24 -
Атолл
19 Oct, 24 -
Теперь Microsoft Тоже Замешана В Аферах?
19 Oct, 24 -
20% Российского Рынка Хостинга Занял Рбк
19 Oct, 24