Основная разработка ведется на 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 );
}
});