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

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

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

Сообщение voe 12 мар 2012, 15:38

Выложите кто нибудь пример рабочий!
voe
UNIт
 
Сообщения: 65
Зарегистрирован: 11 июл 2011, 14:09

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

Сообщение Nolex 19 мар 2012, 15:58

voe писал(а):Выложите кто нибудь пример рабочий!

Ну это наглёж уже совсем....! Человек не поленился, написал враппер, выложил его не за деньги, БЕСПЛАТНО, а ты еще пример просишь.

p.s. В первом посте все есть — и проект, и пример как юзать.
Разработка игр в студии Brinemedia .
Аватара пользователя
Nolex
UNIверсал
 
Сообщения: 483
Зарегистрирован: 17 окт 2010, 12:26
Откуда: Украина
Skype: exlumen
  • Сайт
  • ICQ

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

Сообщение chuvi 11 апр 2012, 14:00

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} приходит, но обработчик его не ловит что ли... :-\ В чем тут может быть дело?


Всем привед, вроде кое как решил проблему, но все равно требует доработки. Именно описать саму проблему не смогу за неимением знаний по JawaScript, но могу сказать что она была в методе ObjToXml() класса JSCore, вот решение:
Синтаксис:
Используется csharp
public static string ObjToXml()
        {
            return
                "Object.prototype.toXml = function(t, nesting)             " +
                 "{                                                         " +
                     "var sa = new Array(''), se = new Array('');           " +
                     "if (!t)                                               " +
                         "t = this._tagName || 'object';                    " +

                     //"alert('Start: ' + t);" +
                     //"var counter = 0; " +                    
                     "for (var i in this)                                   " +
                     "{                                                     " +
                         //"counter++; " +                        
                         "if (this.hasOwnProperty(i) && i.charAt(0) != '_') " +
                         "{                                                 " +
                             "var v = this[i];                              " +

                             //"alert('v before: ' + v);" +

                             "switch (typeof v)                             " +
                             "{                                             " +
                                 "case 'undefined':                         " +
                                 "case 'function':                          " +
                                 "case 'unknown': break;                    " +
                                 "case 'object': if (v != null && nesting) { se.push(v.toXml(i, true)); } break;" +
                                 "case 'string': v = v.toXml();             " +
                                 "default: sa.push(' ' + i + '=\"' + v + '\"');" +
                             "}                                             " +
                         "}                                                 " +
                         // вот здесь собсно решение ))
                         "else if(i=='toXml' && this !='[object Object]')" +
                            "{ sa.push(' return=\"' + this + '\" '); }" +
                     "}                                                     " +                  
                     "var s = se.join('\\r\\n');                              " +                    
                     "return '<' + t + sa.join('') + ((s != '') ? '>' + s + '\\r\\n' + '</' + t + '>' : '/>');" +
                 "};                                                        " +

                 "String.prototype.toXml = function()                       " +
                 "{                                                         " +
                     "return this.replace(/&/g, '&amp;').                    " +
                       "replace(/</g, '&lt;').replace(/>/g, '&gt;').          " +
                       "replace(/\\'/g, '&apos;').replace(/\"/g, '&quot;');   " +
                 "};";
        }

после чего будет приходить ответ в виде тэга с атрибутом return
chuvi
UNец
 
Сообщения: 8
Зарегистрирован: 13 июл 2011, 14:09

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

Сообщение DMs51 19 апр 2012, 00:53

Огромный респект и уважуха=))
(3A4OT) (3A4OT)
столкнулся с проблемкой как сохранить из приложения Unity3d отправить Texture2D на стену друга. когда запускаю програмку со своего компа то после Upload фотографии методом
VKReq.UploadPhotoToWall(tmp["upload_url"],tmpPhoto,OnUplPhoto);
то в ответ приходят нужные параметры для VKPhotos.SaveWallPhoto(UserIn[0],tmp["server"],tmp["photo"],tmp["hash"],OnSaveWallPhoto);
А если эту же програмку запускаю с контакта IFrame то в ответ ничего не приходит, просто пустой ответ.

(ЗЫ странно но VKRequest ставлю JSON а он все равно присылает в XML)

вот вырезки исходника:

Синтаксис:
Используется csharp
int MarkerID=-1;string[] UserIn;
        public void SendMarkerToWall(string userin,int markerid)
        {MarkerID=markerid;
                UserIn=userin.Split(new char[] {';'});
                //for(int i=0;i<UserIn.Length;i++)
                //{
                VKInfo.LOG+="\n UserIn0="+UserIn[0]+" markerWALL "+markerid.ToString()+"\n";
                        VKWall.GetPhotoUploadServer(UserIn[0],OnGetUploadServer);                        //Здесь все работает получаю URL для POST запроса с photo
                //}
               
        }
        public void OnGetUploadServer(string Response)
        {Dictionary<string, string> tmp =new Dictionary<string, string>();
                VKInfo.LOG+="\n OnGetUploadServer \n"+Response+"\n";
                Response=Response.Replace("<response","");
                Response=Response.Replace("/>","");
                Response=Response.Trim();
                Response=Response.Replace("amp;","");
               
                int intDelimiterIndx = Response.IndexOf("=");
                int intDelimiterLength = "=".Length;
                string p0 = Response.Substring(0, intDelimiterIndx);
                string p1 = Response.Substring(intDelimiterIndx + intDelimiterLength, Response.Length - (intDelimiterIndx + intDelimiterLength));
        tmp.Add(p0, p1);       
               
                 Texture2D tmpPhoto=(Texture2D)(Resources.Load("MarkerDMS("+MarkerID.ToString()+")", typeof(Texture2D)));
               
                VKInfo.LOG+="\n UploadUrl2 \n"+tmp["upload_url"]+" "+tmpPhoto.name+"\n";
                //tmp["upload_url"] - содержит upload_url
                //tmpPhoto- картинка загрузилась в Texture2D
               
                VKReq.UploadPhotoToWall(tmp["upload_url"],tmpPhoto,OnUplPhoto);  
//Вот здесь при вызове с локального компа то приходит в OnUplPhoto Response с нужными параметрами, а если с IFrame контакта то Response ="" пустой

               
        }
       
        public void OnUplPhoto(string Response)
        {Dictionary<string, string> tmp =new Dictionary<string, string>();
                VKInfo.LOG+="\n OnUplPhoto \n"+Response+"\n";
                string[] param = Response.Split(new char[] {'='});
        tmp.Add(param[0], param[1]);
                if(tmp.Count==3)
                {
                        //if( tmp["server"]!="" && tmp["photo"] && tmp["hash"])
                        VKPhotos.SaveWallPhoto(UserIn[0],tmp["server"],tmp["photo"],tmp["hash"],OnSaveWallPhoto);
                }      
        }
       
        public void OnSaveWallPhoto(string Response)
        {Dictionary<string, string> tmp =new Dictionary<string, string>();
                string[] param = Response.Split(new char[] {'='});
        tmp.Add(param[0], param[1]);
               
                VKWall.Post(int.Parse(UserIn[0]),"MagicCube",tmp["id"],"0",OnWallPost);
        }
        public void OnWallPost(string Response)
        {Dictionary<string, string> tmp =new Dictionary<string, string>();
                string[] param = Response.Split(new char[] {'='});
        tmp.Add(param[0], param[1]);
                //tmp["post_id"];
               
        }
 
DMs51
UNец
 
Сообщения: 3
Зарегистрирован: 05 апр 2012, 03:50

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

Сообщение DMs51 19 апр 2012, 14:22

Нашел почему не грузилось при парсингде когда получал upload_url записались лишние кавычки
DMs51
UNец
 
Сообщения: 3
Зарегистрирован: 05 апр 2012, 03:50

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

Сообщение Good1101 20 апр 2012, 00:30

Дико извиняюсь, но что делать со строкой которую возвращает
Синтаксис:
Используется csharp
public void OnGetProfiles(string Response)
{
    //в Response содержится ответ контакта
}
 

Respoponse возвращает строку в таком формате

<pesponse>
<0 uid="15782229" first_name="Александр" last name= "Иванов"
photo_rec="http//cs1287.userapi.com17373737/e_72387676h.jpg"/>
</personse>

как мне дальше с ней работать не соображу никак.
Как тут стрелять?
Аватара пользователя
Good1101
Адепт
 
Сообщения: 1100
Зарегистрирован: 17 ноя 2011, 14:07
  • ICQ

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

Сообщение alex89200 26 апр 2012, 00:01

Это обычный xml. Читай мануалы по работе с xml :)
Аватара пользователя
alex89200
UNец
 
Сообщения: 45
Зарегистрирован: 08 окт 2010, 15:31

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

Сообщение DMs51 26 апр 2012, 14:17

Как происходит тестирование в контакте приложения? как я узнаю что он в test mode? где смотреть этот параметр(передается вместе с viewer_id или как)? :-bd
DMs51
UNец
 
Сообщения: 3
Зарегистрирован: 05 апр 2012, 03:50

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

Сообщение chuvi 04 май 2012, 12:06

А можно ли тестировать запросы вконтакта прямо из юнити редактора, без создания билда и закидывания его на сервак?
chuvi
UNец
 
Сообщения: 8
Зарегистрирован: 13 июл 2011, 14:09

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

Сообщение cibersant 04 май 2012, 17:47

Можно,только это стэндалоне приложение.Там авторизацию по другому делать надо.
_https://vk.com/app4031890 - 3d боец
cibersant
Старожил
 
Сообщения: 938
Зарегистрирован: 14 дек 2011, 01:27

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

Сообщение chuvi 15 июн 2012, 15:07

Нашел решение тестирования вконтактовского приложения не заливая билд на хостинг, но хочу сразу пояснить что это только ДЛЯ ТЕСТА с одного компа.

Итак я просто скачал Xampp , установил его, запустил службу Apache, закинул билд в папку C://xampp/htdocs и в настройках самого приложения во вконтакте указал новый путь http;//localhost/WebPlayer.html и все заработало, только сам файл WebPlayer.html должен быть с дописанной строкой для вконтакта как описано выше в первом или втором посте. Для быстрого теста приложения самое оно ))
chuvi
UNец
 
Сообщения: 8
Зарегистрирован: 13 июл 2011, 14:09

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

Сообщение Good1101 19 июн 2012, 17:35

Подскажите пожалуйста как работать с методами класса VKSecure. Например я вызываю метод списания голосов
Синтаксис:
Используется csharp
        if (GUILayout.Button("Списать 1 голос"))
        {
                int unixTime = (int)(System.DateTime.UtcNow - new System.DateTime(1970, 1, 1)).TotalSeconds;
                VKSecure.SecureWithdrawVotes(unixTime.ToString(), Random.Range(500, 1000), int.Parse(myID), 100, 0, ResultTransaction);

        }
    public void ResultTransaction(string response)
    {
        resylt = response;
    }
 

resylt всегда возвращает неизвестную ошибку
<error error_code="1" error_msg="Unknown error occured"/>

В принципе как любой другой метод из класса VKSecure
в документации вк еще немного смущает вот это
Данный метод доступен только с серверной стороны.

то есть мне нужно перед вызовом этого метода произвести какую то авторизацию или что?
или вообще мне не этот метод нужно юзать но ничего другого я не нашел.
Как тут стрелять?
Аватара пользователя
Good1101
Адепт
 
Сообщения: 1100
Зарегистрирован: 17 ноя 2011, 14:07
  • ICQ

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

Сообщение chuvi 20 июн 2012, 11:04

VKSecure вызывается только сервером, а у вас скорее всего судя по GUI это клиентское приложение, если вам нужно вызывать методы именно VKSecure , то это делается со стороны серверной части приложения, после соответствующей авторизации (см. http://vk.com/developers.php?oid=-1&p=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F)
chuvi
UNец
 
Сообщения: 8
Зарегистрирован: 13 июл 2011, 14:09

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

Сообщение Good1101 20 июн 2012, 17:06

а налогов этих методов для вызова из клиента значит нет и нужно их вызывать через сервер?
уточню у меня IFrame приложение, и сейчас требуется работать с голосами.
Как тут стрелять?
Аватара пользователя
Good1101
Адепт
 
Сообщения: 1100
Зарегистрирован: 17 ноя 2011, 14:07
  • ICQ

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

Сообщение Good1101 21 июн 2012, 00:09

пришлось написать свой пхп на сервере для с Secure запросов, все заработало, а как в ваппере это реализовать так толком и не понял.
Как тут стрелять?
Аватара пользователя
Good1101
Адепт
 
Сообщения: 1100
Зарегистрирован: 17 ноя 2011, 14:07
  • ICQ

Пред.След.

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

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

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