Проблема с VK API [тупняк с users.get]

Проблема с VK API [тупняк с users.get]

Сообщение Nikkilla 21 июл 2014, 03:50

Инициализировал VK API из под IFrame:
Синтаксис:
Используется javascript
<script src="//vk.com/js/api/xd_connection.js?2"  type="text/javascript"></script>
<script type="text/javascript">
        VK.init(function()
        {
                // API initialization succeeded
                VK.addCallback('OnWindowBlur', function(settings)
                    { u.getUnity().style.visibility = 'hiden'; });
                VK.addCallback('OnWindowFocus', function(settings)
                    { u.getUnity().style.visibility = 'visible'; });
        },
        function()
        {
                // API initialization failed
                alert('VK API Loading Eror!');
        },
        '5.23');
       
        function GetParams()
        {
                u.getUnity().SendMessage("SceneRoot", "OnGetParams", document.location.href);
        }
       
        function GetProfile(viewer_id)
        {
                VK.api('users.get',{uids:viewer_id},function(data)
                {
                        if (data.response)
                        {
                                alert('' + data.response.length);
                        }
                        else
                        {
                                alert('Eror: ' + data)
                        }
                });
        }
</script>
 


Инициализация VK.init проходит успешно. Потом юнька посылает запрос GetParams(), после парсинга ответа, если viewer_id успешно получен отправляется запрос GetProfile(viewer_id), который по идее должен получить имя и фамилию пользователя, но вся соль в том, что мне приходит Eror: [Object object].
viewer_id передается юнькой как string. Проверял, с ним все ок.

P.S. Приложение стоит на https домене. Вот настройки приложения в ВК
Адрес IFrame: http://vk.r*******s.ru/test1/index.html
HTTPS-адрес IFrame: https://vk.r*******s.ru/test1/index.html
Установка: "требуется"
Programmierung, Programmierung und erneut Programmierung!
Аватара пользователя
Nikkilla
UNец
 
Сообщения: 30
Зарегистрирован: 17 июл 2014, 18:32
Skype: ivankishenko

Re: Проблема с VK API [тупняк с users.get]

Сообщение cibersant 21 июл 2014, 09:27

https://vk.com/dev/users.get user_ids .

Пример выполнения запроса к API:
VK.api("users.get", {user_ids:"1,2,3,4"}, function(data) {
// Действия с полученными данными
});

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

Re: Проблема с VK API [тупняк с users.get]

Сообщение Nikkilla 21 июл 2014, 11:53

Написал так:
Синтаксис:
Используется javascript
function GetProfile(viewer_id)
{
        VK.api("users.get", {user_ids:"1,992037"}, function(data)
        {
                if (data.response)
                {
                        alert('' + data.response.length);
                }
                else
                {
                        alert('Eror: ' + data)
                }
        });
}
 


Все так же возвращает eror
И по поводу документации - там все в одинарных скобках, а у тебя в двойных. Хотя с одинарными тоже не работает.
Programmierung, Programmierung und erneut Programmierung!
Аватара пользователя
Nikkilla
UNец
 
Сообщения: 30
Зарегистрирован: 17 июл 2014, 18:32
Skype: ivankishenko

Re: Проблема с VK API [тупняк с users.get]

Сообщение cibersant 21 июл 2014, 12:16

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

Re: Проблема с VK API [тупняк с users.get]

Сообщение Nikkilla 21 июл 2014, 13:09

Переименовал в GetUserInfoVK. Все та же ошибка. В чем еще может быть проблема? Может есть пример готового IFrame с подобным функционалом у кого?
Programmierung, Programmierung und erneut Programmierung!
Аватара пользователя
Nikkilla
UNец
 
Сообщения: 30
Зарегистрирован: 17 июл 2014, 18:32
Skype: ivankishenko

Re: Проблема с VK API [тупняк с users.get]

Сообщение cibersant 21 июл 2014, 15:57

Nikkilla писал(а):Переименовал в GetUserInfoVK. Все та же ошибка. В чем еще может быть проблема? Может есть пример готового IFrame с подобным функционалом у кого?

В каждом приложении iframe в самом контакте и есть пример.Нажимаешь ПКМ->посмотреть код iframe.Там много чего можно позаимствовать.
_https://vk.com/app4031890 - 3d боец
cibersant
Старожил
 
Сообщения: 938
Зарегистрирован: 14 дек 2011, 01:27

Re: Проблема с VK API [тупняк с users.get]

Сообщение Nikkilla 22 июл 2014, 03:33

Особо не помогло, у многих приложений даже VK.init нету. Вот нашел врапер viewtopic.php?f=13&t=3894, но с ним тоже ничего не работает.
С ним даже инит не проходит.
Programmierung, Programmierung und erneut Programmierung!
Аватара пользователя
Nikkilla
UNец
 
Сообщения: 30
Зарегистрирован: 17 июл 2014, 18:32
Skype: ivankishenko

Re: Проблема с VK API [тупняк с users.get]

Сообщение Nikkilla 22 июл 2014, 04:31

Вот код IFrame:
Синтаксис:
Используется javascript
<!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>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
                <title>Unity Web Player | NetworkTest</title>
                <script type='text/javascript' src='https://ssl-webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/jquery.min.js'></script>
                <script type="text/javascript">
                <!--
                var unityObjectUrl = "http://webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/UnityObject2.js";
                if (document.location.protocol == 'https:')
                        unityObjectUrl = unityObjectUrl.replace("http://", "https://ssl-");
                document.write('<script type="text\/javascript" src="' + unityObjectUrl + '"><\/script>');
                -->
                </script>
                <script type="text/javascript">
                <!--
                        var config = {
                                width: 640,
                                height: 480,
                                params: { enableDebugging:"0" }
                               
                        };
                        config.params["disableContextMenu"] = true;
                        var u = new UnityObject2(config);
                       
                        jQuery(function() {

                                var $missingScreen = jQuery("#unityPlayer").find(".missing");
                                var $brokenScreen = jQuery("#unityPlayer").find(".broken");
                                $missingScreen.hide();
                                $brokenScreen.hide();

                                u.observeProgress(function (progress) {
                                        switch(progress.pluginStatus) {
                                                case "broken":
                                                        $brokenScreen.find("a").click(function (e) {
                                                                e.stopPropagation();
                                                                e.preventDefault();
                                                                u.installPlugin();
                                                                return false;
                                                        });
                                                        $brokenScreen.show();
                                                break;
                                                case "missing":
                                                        $missingScreen.find("a").click(function (e) {
                                                                e.stopPropagation();
                                                                e.preventDefault();
                                                                u.installPlugin();
                                                                return false;
                                                        });
                                                        $missingScreen.show();
                                                break;
                                                case "installed":
                                                        $missingScreen.remove();
                                                break;
                                                case "first":
                                                break;
                                        }
                                });
                                u.initPlugin(jQuery("#unityPlayer")[0], "NetworkTestVK.unity3d");
                        });
                -->
                </script>      
                <script type="text/javascript" src="//vk.com/js/api/xd_connection.js?2"></script>
                <script type="text/javascript">
                        VK.init(function()
                        {
                                alert('VK API initialization succeeded!');
                                VK.addCallback('OnWindowBlur', function(settings) { u.getUnity().style.visibility = 'hiden'; });
                                VK.addCallback('OnWindowFocus', function(settings) { u.getUnity().style.visibility = 'visible'; });
                        },
                        function()
                        {
                                // API initialization failed
                                alert('VK API Loading Eror!');
                        },
                        '5.23');
                       
                        function GetParams()
                        {
                                u.getUnity().SendMessage("SceneRoot", "OnGetParams", document.location.href);
                        }
                       
                        function GetUserInfoVK()
                        {
                                VK.api("users.get", {user_ids:"1,992037"}, function(data)
                                {
                                        if (data.response)
                                        {
                                                alert('' + data.response.length);
                                        }
                                        else
                                        {
                                                alert('Eror: ' + data)
                                        }
                                });
                        }
                </script>
                <style type="text/css">
                <!--
                body {
                        font-family: Helvetica, Verdana, Arial, sans-serif;
                        background-color: white;
                        color: black;
                        text-align: center;
                }
                a:link, a:visited {
                        color: #000;
                }
                a:active, a:hover {
                        color: #666;
                }
                p.header {
                        font-size: small;
                }
                p.header span {
                        font-weight: bold;
                }
                p.footer {
                        font-size: x-small;
                }
                div.content {
                        margin: auto;
                        width: 640px;
                }
                div.broken,
                div.missing {
                        margin: auto;
                        position: relative;
                        top: 50%;
                        width: 193px;
                }
                div.broken a,
                div.missing a {
                        height: 63px;
                        position: relative;
                        top: -31px;
                }
                div.broken img,
                div.missing img {
                        border-width: 0px;
                }
                div.broken {
                        display: none;
                }
                div#unityPlayer {
                        cursor: default;
                        height: 480px;
                        width: 640px;
                }
                -->
                </style>
        </head>
        <body>
                <div class="content">
                        <div id="unityPlayer">
                                <div class="missing">
                                        <a href="http://unity3d.com/webplayer/" title="Unity Web Player. Install now!">
                                                <img alt="Unity Web Player. Install now!" src="http://webplayer.unity3d.com/installation/getunity.png" width="193" height="63" />
                                        </a>
                                </div>
                        </div>
                </div>
                <p class="footer">&laquo; created with <a href="http://unity3d.com/unity/" title="Go to unity3d.com">Unity</a> &raquo;</p>
        </body>
</html>
 


Вот код скрипта повешеного на gameObject:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

[RequireComponent(typeof (NetworkView))]
public class ExecutorVKAPI : MonoBehaviour
{      
        private static string api_id, user_id, access_token;
        private static bool isLogin;

        void Start ()
        {
                isLogin = false;
                if (!Options.isServerSide)
                {
                        Application.ExternalCall("GetParams");
                }
        }

        public static bool isLoginInVK()
        {
                return isLogin;
        }

        public void OnGetParams(string paramData)
        {
                Dictionary<string, string> paramList = new Dictionary<string, string>();
                string[] paramArray = paramData.Split(new char[] {'?','&'});
               
                for (int i = 0; i < paramArray.Length; i++)
                {
                        string[] parsdata = paramArray[i].Split(new char[] {'='});
                        if (parsdata.Length == 2) paramList.Add(parsdata[0], parsdata[1]);
                }

                api_id = paramList["api_id"];
                user_id = paramList["user_id"];
                access_token = paramList["access_token"];

                if (user_id != null && user_id != "" && access_token != null && access_token != "")
                {
                        Console.Write("Login in VK whith ID:" + user_id);
                        GetUserInfo();
                }
                else
                {
                        Console.WriteEror("Login in VK failed!" + user_id);
                }
        }

        private void GetUserInfo()
        {
                Console.Write("Send GetUserInfo: " + user_id);
                Application.ExternalCall("GetUserInfoVK");
        }
}
 


Уже вторую неделю маюсь с этой проблемой. Гляньте кому не сложно.
Programmierung, Programmierung und erneut Programmierung!
Аватара пользователя
Nikkilla
UNец
 
Сообщения: 30
Зарегистрирован: 17 июл 2014, 18:32
Skype: ivankishenko

Re: Проблема с VK API [тупняк с users.get]

Сообщение Nikkilla 22 июл 2014, 11:10

Все, задача решена. Нужно было добавить в настройках приложения вот этот код в поле первого запроса:
Синтаксис:
Используется javascript
method=getProfiles&uids={viewer_id}&fields=sex,bdate,city,country&format=json&v=2.0
Programmierung, Programmierung und erneut Programmierung!
Аватара пользователя
Nikkilla
UNец
 
Сообщения: 30
Зарегистрирован: 17 июл 2014, 18:32
Skype: ivankishenko

Re: Проблема с VK API [тупняк с users.get]

Сообщение cibersant 22 июл 2014, 11:36

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


Вернуться в Социальные сети

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

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