UnAPI - враппер функций ВКонтакте API для Unity

Лучший способ помочь другим, поделиться своими находками.

UnAPI - враппер функций ВКонтакте API для Unity

Сообщение alex89200 14 мар 2011, 04:50

Вот, наваял в свободное время... Реализованы все доступные на данный момент методы API ВКонтакте. Все прокомменитировано и очень просто в использовании. Как пример, получение данных о профилях некоторых пользователей (фамилия и имя в именительном падеже, квадратная фотка):

Синтаксис:
Используется csharp
using UnityEngine;
using VK.Core;
using VK.VKApi;

void Start()
{
    JSCore.GameObjName = gameObject.name;
    VKUsers.GetProfiles("123123123,456456456,789789789", UsrFields.photo_rec, NameCase.nom_Default, OnGetProfiles);
}

public void OnGetProfiles(string Response)
{
    //в Response содержится ответ контакта
}
 



Для работы необходимо добавить в html файл плеера следующую строчку:

<script type="text/javascript" src="http://vkontakte.ru/js/api/xd_connection.js?2"></script>

Получится что-то вроде этого:
Скрытый текст:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="http://webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/UnityObject.js"></script>
<script type="text/javascript">
<!--
//--------------Инициализация Unity Web Player---------------
function GetUnity() {
if (typeof unityObject != "undefined") {
return unityObject.getObjectById("unityPlayer");
}
return null;
}
if (typeof unityObject != "undefined") {
unityObject.embedUnity("unityPlayer", "WebPlayer.unity3d", 805, 575);
}
//-----------------------------------------------------------
-->
</script>

<script type="text/javascript" src="http://vkontakte.ru/js/api/xd_connection.js?2"></script>

<style type="text/css">
<!--
body {
font-family: Helvetica, Verdana, Arial, sans-serif;
background-color: white;
color: black;
text-align: center;
}
и т.д.


UnAPI.unitypackage
У вас нет доступа для просмотра вложений в этом сообщении.
Аватара пользователя
alex89200
UNец
 
Сообщения: 45
Зарегистрирован: 08 окт 2010, 15:31

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение Ert Donuell 14 мар 2011, 08:24

(3A4OT) (3A4OT)
Даже декодирование JSON нашёл - вот это круто! Автору респект!! :-bd
Добавить dmitrii.baranov.yumasoft в Skype
Аватара пользователя
Ert Donuell
Старожил
 
Сообщения: 781
Зарегистрирован: 05 июл 2010, 09:50
Откуда: Санкт-Петербург
  • ICQ

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение alex89200 14 мар 2011, 12:32

Ert Donuell писал(а):Даже декодирование JSON нашёл - вот это круто! Автору респект!! :-bd

Ну там оно примитивное, но для контактовских нужд вполне хватает :)
А вообще спс, старался
Аватара пользователя
alex89200
UNец
 
Сообщения: 45
Зарегистрирован: 08 окт 2010, 15:31

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение Freemanx 16 мар 2011, 20:13

Не могли бы вы дать пример использования этого метода?

Синтаксис:
Используется csharp
   /// <summary>
        /// Декодирует полученную строку в формате JSON и записывает пары ключ-значение в словарь
        /// </summary>
        /// <param name="JSONstring">строка в формате JSON</param>
        /// <returns>Возвращает с записанными в него данными, полученными в результате декодирования строки</returns>
        public Dictionary<string, string> DecodeJSON(string JSONstring)
Freemanx
UNец
 
Сообщения: 10
Зарегистрирован: 16 янв 2011, 01:38

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение alex89200 18 мар 2011, 19:17

Freemanx писал(а):Не могли бы вы дать пример использования этого метода?


Синтаксис:
Используется csharp
Dictionary<string, string> someResponseParams = DecodeJSON(someResponse);

где someResponse - ответ контакта в формате JSON.
После вызова в someResponseParams будут записаны пары ключ-значение.

А вообще, если пользоваться обертками из неймспейса VK.VKApi, то ответ будет приходить в формате XML (в 99% случаев). После чего он приводится в нормальный вид (см. примечание ниже), например, таким способом:
Синтаксис:
Используется csharp
response = System.Text.RegularExpressions.Regex.Replace(response, @"(<)([0-9]+)", @"$1El$2");

после чего его можно загнать в обычный XmlDocument и пользоваться. В формате JSON будут приходить ответы только при "ручной" отправке запросов через VKRequests.SendRequest и SendSecureRequest с явным указанием формата JSON.

Примечание:
Скрытый текст:
Контакт возвращает XML с числовыми именами нодов, т.е. к примеру <0 param1=value1 param2=value2/>. XmlDocument начинает ругаться на этот произвол.. поэтому код, что приведен выше, добавляет к названиям нодов префикс "El", т.е. получается что-то вроде <El0 param1=value1 param2=value2/> и уже в таком виде все нормально кушается
Аватара пользователя
alex89200
UNец
 
Сообщения: 45
Зарегистрирован: 08 окт 2010, 15:31

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение Freemanx 21 мар 2011, 00:23

спасибо!
Freemanx
UNец
 
Сообщения: 10
Зарегистрирован: 16 янв 2011, 01:38

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение Altodor 28 мар 2011, 11:21

Люди, скажите, почему VKUser.GetUserBalance возвращает просто <response/> ??? ((
Altodor
UNIт
 
Сообщения: 82
Зарегистрирован: 19 сен 2010, 07:58

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение knyazevaleks@yandex.ru 03 апр 2011, 21:31

а где прописывать id приложения и где указываются логин и пароль юзера?
knyazevaleks@yandex.ru
UNец
 
Сообщения: 1
Зарегистрирован: 03 апр 2011, 12:51

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение summoning 06 апр 2011, 22:38

все бы хорошо,но вот JSCore.GetParams("OnGetParams"); ничего не возвращает.или это только у меня так?
Аватара пользователя
summoning
UNец
 
Сообщения: 30
Зарегистрирован: 25 окт 2010, 07:53

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение alex89200 07 апр 2011, 00:50

Altodor писал(а):Люди, скажите, почему VKUser.GetUserBalance возвращает просто <response/> ??? ((

Как появится время - гляну.

knyazevaleks@yandex.ru писал(а):а где прописывать id приложения и где указываются логин и пароль юзера?

id приложения передается контактом через GET запрос и его можно вытянуть через JSCore.GetParams
И зачем указывать логин и пароль юзера??

summoning писал(а):все бы хорошо,но вот JSCore.GetParams("OnGetParams"); ничего не возвращает.или это только у меня так?

Возможно вы где-то в Start или Awake на своих GO переопределяете JSCore.GameObjName. Проблему решит замена в скрипте VKCommunicator метода InitSuccess на следующий:
Синтаксис:
Используется csharp
public void InitSuccess(string ParamData)
    {
        //получение параметров запуска из GET запроса
        JSCore.GameObjName = name;
        JSCore.GetParams("OnGetParams");
    }

Он отличается от старого метода только тем, что перед вызовом GetParams переменной GameObjName присваивается имя текущего GO. Кстати, такую практику лучше применять перед всеми вызовами методов, которые имеют калбэки.
Аватара пользователя
alex89200
UNец
 
Сообщения: 45
Зарегистрирован: 08 окт 2010, 15:31

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение Vadis 08 апр 2011, 18:40

Подскажите, как получить имя и фамилию текущего пользователя? Нужно очень срочно

JSCore.GetParams("OnGetParams"); присылает hash=
Vadis
UNец
 
Сообщения: 1
Зарегистрирован: 30 мар 2011, 20:09

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение alex89200 10 апр 2011, 23:46

Vadis писал(а):Подскажите, как получить имя и фамилию текущего пользователя? Нужно очень срочно

JSCore.GetParams("OnGetParams"); присылает hash=


Гет парамс возвращает ID текущего пользователя. Дальше данные о нем можно получить через VK.Users.GetProfiles()
Аватара пользователя
alex89200
UNец
 
Сообщения: 45
Зарегистрирован: 08 окт 2010, 15:31

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение s_vovik 23 апр 2011, 18:26

Вызвал JSApi.ShowSettingsBox(0); в итоге окошко с настройками приложения оказалось за плеером юнити, только небольшой кусочек торчит сверху (можно посмотреть на скрине). Приложение загружаю через iFrame, html-ку которую генерит UnityEditor обрезал по полной, осталось только самое необходимое. Кто знает как с этим бороться?

Такой глюк наблюдается в браузерах Chrome 10, IE 8 и Safari. В Opera и FF работает нормально
У вас нет доступа для просмотра вложений в этом сообщении.
Аватара пользователя
s_vovik
UNец
 
Сообщения: 12
Зарегистрирован: 22 май 2010, 09:30
Откуда: Москва
  • Сайт

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение gnoblin 23 апр 2011, 21:40

окно юнити в этот момент надо свернуть до размера 1 пиксель на 1 пиксель (например)
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: UnAPI - враппер функций ВКонтакте API для Unity

Сообщение s_vovik 23 апр 2011, 22:09

gnoblin спасибо! отличное решение. я где то видел соответствующие функции... JSApi.ResizeWindow
Аватара пользователя
s_vovik
UNец
 
Сообщения: 12
Зарегистрирован: 22 май 2010, 09:30
Откуда: Москва
  • Сайт

След.

Вернуться в Исходники (Копилка)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1