Общая информация
Это SDK устарело и в данный момент не поддерживается
Репозиторий на Github: ok-unity3d-sdk
Unity SDK позволяет Android и iOS приложениям взаимодействовать с Одноклассниками.
Подключение SDK
Перед подключением SDK необходимо проверить в настройках приложения:
- нужная платформа добавлена в настройках приложения (Android и/или iOS);
- включена клиентская авторизация;
- добавлен redirect_uri вида okauth://ok{APP_ID};
- приложение обладает нужными для функционирования правами, рекомендуется VALUABLE_ACCESS и LONG_ACCESS_TOKEN.
Установка
- В зависимости от используемой версии Unity (4 или 5) вы должны скопировать нужные DLL- и мета-файлы и удалить остальные (odnoklassniki_unity4.dll, odnoklassniki_unity4.dll.meta / odnoklassiki_unity5.dll, odnoklassniki_unity5.dll.meta из Assets/Plugins). Убедитесь, что GUID данной DLL остается неизменным, так как если он был изменен, то могут сломаться включенные префабы. Обратите внимание, что это должно быть сделано до открытия проекта в Unity.
- Заполните параметры приложения в OdnoklassnikiSettings.asset.
- Добавьте следующие строки в android.manifest.
- через тег application
<activity android:name="ru.odnoklassniki.unity.OKAndroidPlugin"
android:label="@string/app_name"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
<intent-filter>
<data android:scheme="okauth" android:host="{APP_ID}" />
</intent-filter>
<meta-data android:name="android.app.lib_name" android:value="unity" />
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
</activity>
<activity android:name="ru.odnoklassniki.unity.webview.OKWVActivity"
android:label="@string/app_name"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
<meta-data android:name="android.app.lib_name" android:value="unity" />
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
</activity>
- через тег manifest
<activity android:name="ru.odnoklassniki.unity.auth.AppAuthorization"/>
Использование SDK
Инициализация
OK.Init(success =>
{
if (success) {
//Proceed to authorization
}
});
Авторизация
OK.Auth(success =>
{
if (success) {
//Authorization successful, you can now use Odnoklassniki API
}
});
Есть 2 варианта авторизации через Одноклассники: через установленное приложение (Android / iOS) или через WebView.
После авторизации у приложения будет токен с ограниченным временем жизни (30 минут без LONG_ACCESS_TOKEN):
OK.AccessToken
Если авторизация происходила через официальное приложения Одноклассников, то текущее приложение получит также refresh_token, который позволяет получать новые access_token до 30 дней:
OK.IsRefreshTokenValid
Получить действительный access_token можно при помощи кода:
if (OK.isInitialized && OK.AccessTokenExpiresAt < DateTime.Now) {
if (OK.IsRefreshTokenValid) {
OK.RefreshAccessToken(success =>
{
//Token refreshed
});
} else {
OK.RefreshOAuth(success => {
//Token refreshed
}
}
}
Использование виджетов
Виджет приглашения (OpenInviteDialog)
OK.OpenInviteDialog(response => {
//Will be called after Invite API call
}, "Invite Message");
Виджет рекомендации (OpenSuggestDialog)
OK.OpenSuggestDialog(response => {
//Will be called after Suggest API call
}, "Suggest Message");
Виджет загрузки фото (OpenPhotoDialog)
OK.OpenPhotoDialog(response => {
//Will be called after Upload API call
}, texture, "Description");
Виджет публикации (OpenPublishDialog)
OK.OpenPublishDialog(response => {
//Will be called after Publish API call
}, new List<OKMedia>()
{
OKMedia.Photo(texture),
OKMedia.Text("Description")
});
Обработка ошибок
response => {
if (response.Object != null && response.Object.ContainsKey("error_code")) {
string errorCode = response.Object["error_code"].ToString();
string errorMessage = response.Object["error_msg"].ToString();
//Debug.Log or show alert?
} else {
//Success
}
}