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

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

СообщениеДобавлено: 01 май 2011, 22:16
Nolex
alex89200, большое спасибо за проделанную работу!


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

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


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

У меня такая же проблема, JSCore.GetParams("OnGetParams"); выдает hash=, вместо ID юзера, в чем беда?

Вывожу через GameObject.Find("text2").guiText.text = "DATA: " + ParamData;:

Синтаксис:
Используется csharp
    /// <summary>
    /// Вызывается при получении параметров из GET запроса
    /// </summary>
    /// <param name="ParamData">Содержит параметры GET запроса</param>
    public void OnGetParams(string ParamData)
    {
        GameObject.Find("text2").guiText.text = "DATA: " + ParamData;
                //VK.Users.GetProfiles();
                string[] param = ParamData.Split(new char[] {'='});
        Params.Add(param[0], param[1]);

        //инициализация класса "низкоуровневых" запросов.
        VKReq.Init(Params["api_url"], Params["api_id"], Params["viewer_url"],
                   RequestFormat.XML, Params["secret"], "", Params["sid"]);
    }

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

СообщениеДобавлено: 03 май 2011, 13:45
alex89200
Nolex писал(а):alex89200, большое спасибо за проделанную работу!

У меня такая же проблема, JSCore.GetParams("OnGetParams"); выдает hash=, вместо ID юзера, в чем беда?

Вывожу через GameObject.Find("text2").guiText.text = "DATA: " + ParamData;:

Синтаксис:
Используется csharp
    /// <summary>
    /// Вызывается при получении параметров из GET запроса
    /// </summary>
    /// <param name="ParamData">Содержит параметры GET запроса</param>
    public void OnGetParams(string ParamData)
    {
        GameObject.Find("text2").guiText.text = "DATA: " + ParamData;
                //VK.Users.GetProfiles();
                string[] param = ParamData.Split(new char[] {'='});
        Params.Add(param[0], param[1]);

        //инициализация класса "низкоуровневых" запросов.
        VKReq.Init(Params["api_url"], Params["api_id"], Params["viewer_url"],
                   RequestFormat.XML, Params["secret"], "", Params["sid"]);
    }



OnGetParams(string ParamData) вызывается для КАЖДОГО параметра. Последним передается hash, насколько я помню, поэтому в ParamData и содержится только он. Все параметры, которые передаются приложению, записываются в словарь Params. Оттуда их и надо вытягивать.

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

СообщениеДобавлено: 03 май 2011, 17:02
Nolex
Ага, спасибо большое!

Сделал прогон и выдало все параметры.

Синтаксис:
Используется csharp
        void OnGUI() {
                string paraaaam = "";
               
               
                        foreach (var pair in Params)
        {
          paraaaam += pair.Key + "||" + pair.Value +  "\n";
        }
                GUI.TextArea(new Rect(10, 290, 200, 150), paraaaam);
               
        }

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

СообщениеДобавлено: 30 июн 2011, 18:44
DEtH_MoroZ
найс, очень помогло. спасибо.

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

СообщениеДобавлено: 15 окт 2011, 21:39
depsemt
Друзья, могли бы вы разместить простенький рабочий пример?

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

СообщениеДобавлено: 22 окт 2011, 11:49
depsemt
Подскажите, пожалуйста, почему когда размещаю в контакте приложение подвисает, потом выскакивает окно, мол остановить приложения, я его останавливаю и оно отрабатывает нормально.

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

public class New : MonoBehaviour {

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

public void OnGetProfiles(string Response)
{
    GameObject.Find("text2").guiText.text = + Response;
}
}

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

СообщениеДобавлено: 22 ноя 2011, 18:24
Nolex
У меня вопрос. Враппер не поддерживает "Защищенное взаимодействие приложения с API"?
ссылка

Мне надо для обычной(не соц.версии) игры, тянуть авки игроков, которые через контакт зареганы.

p.s. еще раз спасибо за враппер! Мне очень понравилось как сделано.

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

СообщениеДобавлено: 22 ноя 2011, 19:54
alex89200
Насколько я помню поддерживается. Там вроде были методы для отправки secure сообщений

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

СообщениеДобавлено: 23 ноя 2011, 00:11
Nolex
alex89200 писал(а):Насколько я помню поддерживается. Там вроде были методы для отправки secure сообщений

Ага, спасибо, нашел. Это SendSecureRequest. А можно пожалуйста пример как юзать правильно для получения инфы о юзере?

VKRequests vkr = gameObject.GetComponent<VKRequests>();
vkr.SendSecureRequest("GetProfiles", блабла...?);

А каком формате вводить параметры и callback?

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

СообщениеДобавлено: 23 ноя 2011, 14:15
alex89200
В SendSecureRequest() передается стринговое имя метода ВК, вызываемый при получении ответа метод, в который будет передана строка с ответом, и массив параметров в формате "параметр=значение".
Параметры для конкретного метода можно узнать в документации ВК.

Пример для GetProfiles:

Синтаксис:
Используется csharp
......
VKCommunicator vkc = gameObject.GetComponent<VKCommunicator>();
vkc.VKReq.SendSecureRequest("GetProfiles", OnGetProfiles, new string[] { "uids=1234567890,543212345,9876789", "name_case=dat" });
......

public void OnGetProfiles(string s)
{
    Debug.Log(s);
}

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

СообщениеДобавлено: 23 ноя 2011, 18:59
Nolex
alex89200 писал(а):В SendSecureRequest() передается стринговое имя метода ВК, вызываемый при получении ответа метод, в который будет передана строка с ответом, и массив параметров в формате "параметр=значение".
Параметры для конкретного метода можно узнать в документации ВК.

Пример для GetProfiles:

Синтаксис:
Используется csharp
......
VKCommunicator vkc = gameObject.GetComponent<VKCommunicator>();
vkc.VKReq.SendSecureRequest("GetProfiles", OnGetProfiles, new string[] { "uids=1234567890,543212345,9876789", "name_case=dat" });
......

public void OnGetProfiles(string s)
{
    Debug.Log(s);
}

Ага, спасибо! Пришлось покопаться, метод оказался нерабочим, у ВК видимо были изменения в АПИ. А именно — нехватает обязательных полей, таких как timestamp и random.
Еще одна важная штука. Я неправильно писал название метода. нужно getProfiles, а не GetProfiles

Вот обновленный и рабочий метод. Еще раз спасибо автору за проделанную работу! (3A4OT)

Синтаксис:
Используется csharp
        public void SendSecureRequest(string method, ResponseCallback callback, params string[] metParams)

        {

            string sigParams = "";

            WWWForm form = new WWWForm();

            List<string> reqParams = new List<string>();

               

                        //получаем текущее время в секундах. timestamp

                        int unixTime = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;

               

            //запись всех переданных и доп. параметров в лист

            reqParams.AddRange(metParams);

            reqParams.Add("api_id=" + Api_id);

            //if (Format != RequestFormat.XML)

                reqParams.Add("format=" + "json");

            reqParams.Add("v=3.0");

                        reqParams.Add("timestamp=" + unixTime);

                        //рандомное число

                        reqParams.Add("random=" + UnityEngine.Random.Range(0, 100000));

            reqParams.Add("method=" + method);



            //сортировка по алфавиту

            reqParams.Sort();



            //составление строки параметров для получения подписи sig, а также запись параметров в POST форму

            foreach (string param in reqParams)

            {

                sigParams += param;



                string[] keyValuePair = param.Split('=');

                form.AddField(keyValuePair[0], keyValuePair[1]);

            }



            //получение подписи запроса

                        print(sigParams + "  " +  API_Secret);

            string sig = GetMD5(sigParams + API_Secret);



            //добавление подписи к списку параметров в POST форме

            form.AddField("sig", sig);



            //выполнение запроса и вызов обратной функции при получении ответа

            StartCoroutine(CallbackOnResponse(ApiURL, form, callback));

        }
 

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

СообщениеДобавлено: 24 ноя 2011, 13:15
alex89200
Nolex писал(а):у ВК видимо были изменения в АПИ. А именно — нехватает обязательных полей, таких как timestamp и random.


Вполне возможно :) Времени уже много прошло.

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

СообщениеДобавлено: 02 дек 2011, 14:42
radiys
(3A4OT) (3A4OT)
Автору большое спасибо за проделанную работу! Очень пригодилось в программе :)

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

СообщениеДобавлено: 23 дек 2011, 15:28
cibersant
Подскажите.
1.Как распарсить Responce.
2.Как построить запрос,чтобы получит ответ в json.
JSON я распарсить могу.

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

СообщениеДобавлено: 23 янв 2012, 22:47
Energy
Большое спасибо за враппер! Очень помог! Но у меня проблема с GetUserBalance.

По нажатию на кнопку вызываю GetUserBalance, после получения ответа в обработчике проверяю хватает ли у пользователя голосов:

Синтаксис:
Используется csharp
//нажатие на кнопку
if (GUI.Button(new Rect(30, 300, 100, 30), "Купить")) {
        VKUsers.GetUserBalance(OnGetUserBalance);
}

//обрабатываем полученный результат
public void OnGetUserBalance (string response) {
        int votes = int.Parse(response);        
        if (votes < 100) {
                //голосов недостаточно. Вызываем showPaymentBox
                JSApi.ShowPaymentBox(1);
        } else {
                //списываем голоса
        }
}


Но обработчик OnGetUserBalance молчит :( Проверял чарлезом - ответ {"response":0} приходит, но обработчик его не ловит что ли... :-\ В чем тут может быть дело?