Основная разработка ведется на github, поэтому документация отражает общий принцип, а детали лучше смотреть в примере на github ok-android-sdk/example
В приложении используется Android SDK.
Настройка SDK
У разработчика должно быть приложение с платформой Android и ключи для него:
- APP_ID - id приложения
- APP_PUBLIC_KEY - публичный ключ приложения
У приложения в redirect_uri должно быть добавлено okauth://okXXXXXX, где XXXXXX - APP_ID
Подключение SDK
Подключим SDK через gradle:
compile 'ru.ok:odnoklassniki-android-sdk:2.0.3'
Т.к. для API используется интернет, то добавляем:
<uses-permission android:name="android.permission.INTERNET"/>
Авторизация
Для авторизации необходимо добавить OkAuthActivity, заменив XXXXXX на id своего приложения:
<activity
android:name="ru.ok.android.sdk.OkAuthActivity"
android:configChanges="orientation|screenSize"
android:launchMode="singleTask">
<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:host="okXXXXXX"
android:scheme="okauth"/>
</intent-filter>
</activity>
Использование виджетов
Также если в SDK используются виджет постинга или виджет инвайта/садджеста, их тоже надо добавить:
<activity android:name="ru.ok.android.sdk.OkPostingActivity"/>
<activity android:name="ru.ok.android.sdk.OkAppInviteActivity"/>
<activity android:name="ru.ok.android.sdk.OkAppSuggestActivity"/>
Создание экземпляра клиента
Для создания инстанса Odnoklassniki необходимо добавить:
Odnoklassniki odnoklassniki = Odnoklassniki.createInstance(this, APP_ID, APP_KEY);
Повесим на кнопку вызов OAuth авторизации:
findViewById(R.id.button_login).setOnClickListener(new OnClickListener() {
@Override
public void onClick(final View view) {
odnoklassniki.requestAuthorization(listener, REDIRECT_URL, OkScope.VALUABLE_ACCESS, OkScope.LONG_ACCESS_TOKEN);
}
});
Пример работы с API
Получив сессию пользователя, мы можем сделать вызов к API, например, через AsyncTask (поход в интернет не должен быть в UI потоке), чтобы получить информацию о пользователе:
protected final class GetCurrentUserTask extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(final Void... params) {
try {
return odnoklassniki.request("users.getCurrentUser", null, "get");
} catch (Exception exc) {
Log.e("Odnoklassniki", "Failed to get current user info", exc);
}
return null;
}
@Override
protected void onPostExecute(final String result) {
if (result != null) {
Toast.makeText(MainActivity.this, "Get current user result: " + result, Toast.LENGTH_SHORT).show();
}
}
}
Пример публикации топика
После этого покажем пользователю кнопку, через которую он может сделать себе публикацию:
findViewById(R.id.button_post).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
odnoklassniki.performPosting("{\"media\":[{\"type\":\"text\",\"text\":\"hello world!\"}]}",
false, null, listener);
}
});