Страница 1 из 7

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

СообщениеДобавлено: 14 мар 2011, 04:50
alex89200
Вот, наваял в свободное время... Реализованы все доступные на данный момент методы 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

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

СообщениеДобавлено: 14 мар 2011, 08:24
Ert Donuell
(3A4OT) (3A4OT)
Даже декодирование JSON нашёл - вот это круто! Автору респект!! :-bd

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

СообщениеДобавлено: 14 мар 2011, 12:32
alex89200
Ert Donuell писал(а):Даже декодирование JSON нашёл - вот это круто! Автору респект!! :-bd

Ну там оно примитивное, но для контактовских нужд вполне хватает :)
А вообще спс, старался

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

СообщениеДобавлено: 16 мар 2011, 20:13
Freemanx
Не могли бы вы дать пример использования этого метода?

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

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

СообщениеДобавлено: 18 мар 2011, 19:17
alex89200
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/> и уже в таком виде все нормально кушается

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

СообщениеДобавлено: 21 мар 2011, 00:23
Freemanx
спасибо!

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

СообщениеДобавлено: 28 мар 2011, 11:21
Altodor
Люди, скажите, почему VKUser.GetUserBalance возвращает просто <response/> ??? ((

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

СообщениеДобавлено: 03 апр 2011, 21:31
knyazevaleks@yandex.ru
а где прописывать id приложения и где указываются логин и пароль юзера?

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

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

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

СообщениеДобавлено: 07 апр 2011, 00:50
alex89200
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. Кстати, такую практику лучше применять перед всеми вызовами методов, которые имеют калбэки.

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

СообщениеДобавлено: 08 апр 2011, 18:40
Vadis
Подскажите, как получить имя и фамилию текущего пользователя? Нужно очень срочно

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

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

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

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


Гет парамс возвращает ID текущего пользователя. Дальше данные о нем можно получить через VK.Users.GetProfiles()

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

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

Такой глюк наблюдается в браузерах Chrome 10, IE 8 и Safari. В Opera и FF работает нормально

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

СообщениеДобавлено: 23 апр 2011, 21:40
gnoblin
окно юнити в этот момент надо свернуть до размера 1 пиксель на 1 пиксель (например)

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

СообщениеДобавлено: 23 апр 2011, 22:09
s_vovik
gnoblin спасибо! отличное решение. я где то видел соответствующие функции... JSApi.ResizeWindow