Автор Тема: Unity3D + vk.com  (Прочитано 44363 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Август 16, 2013, 16:06:57 pm
Ответ #30

Mimi Neko

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 2454
  • Репутация:
    153
    • Просмотр профиля
Ну, а названия скриптов где? подпиши в начале, какой из них какой, и заключи код скриптов в теги "Код"!

Август 16, 2013, 16:20:30 pm
Ответ #31

Gavot

  • Новичок

  • Оффлайн
  • *

  • 14
  • Репутация:
    2
    • Просмотр профиля
Спасибо) Пока на тестах, с ajaxом с лету все пошло)

Август 16, 2013, 16:25:47 pm
Ответ #32

Mimi Neko

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 2454
  • Репутация:
    153
    • Просмотр профиля
jQuery.post('getprofile.php', { "viewer_id": viewer_id,"auth_key": auth_key, "imya": data.response[0].first_name, "famylia": data.response[0].last_name, "photo": data.response[0].photo }, function(data){});
 - Эта функция отправляет на сервер, скрипту getprofile.php, строку параметров, которые заключены в первые скобки {}.  Вид каждого параметра: "Имя_переменной": Значение_переменной

function(data){}); которая там в конце - это функция, в которую принимается ответ сервера. Тоесть, в переменной data будет всё то, что в скрипте getprofile.php ты напечатаешь через функцию echo.

Первым делом нужно протестировать, что содержат отправляемые переменные.
Сделать это можно так:
закомментировать эту строку:
//jQuery.post('getprofile.php', { "viewer_id": viewer_id,"auth_key": auth_key, "imya": data.response[0].first_name, "famylia": data.response[0].last_name, "photo": data.response[0].photo }, function(data){});И подставить рядом алерт, чтобы вывести это содержимое на экран:
alert("viewer_id: "+viewer_id+"   auth_key: "+auth_key+"    imya: "+data.response[0].first_name+"    famylia: "+data.response[0].last_name+"    photo: "+data.response[0].photo);
Если данные будут присутствовать - значит нужно отслеживать их передачу в php:


getprofile.php
<?php

$auth_key 
$_POST['auth_key'];
$viewer_id $_POST['viewer_id'];
$name $_POST['imya'];
$fam $_POST['famylia'];
$pic $_POST['photo'];

echo 
"' $auth_key  -   $viewer_id   -   $name   -   $fam    -   $pic '";

?>

И вывести этот ответ сервера через алерт:
jQuery.post('getprofile.php', { "viewer_id": viewer_id,"auth_key": auth_key, "imya": data.response[0].first_name, "famylia": data.response[0].last_name, "photo": data.response[0].photo }, function(data){[b]alert(data);[/b]});

Август 16, 2013, 16:34:15 pm
Ответ #33

Gavot

  • Новичок

  • Оффлайн
  • *

  • 14
  • Репутация:
    2
    • Просмотр профиля
В том и дело, что приходить приходили значения из вк... А вот отправляться в пхп не хотели... Только заменил jQuery.post на:

$.ajax({
type: "POST",
url: "getprofile.php",
data: {......куча этих значений......}

И вместо:
Цитировать
<script src="jquery-2.0.3.min.js" type="text/javascript"></script>
Поставил:
Цитировать
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js' type='text/javascript'></script>

Как на тесте уже все заработало)

Август 16, 2013, 16:38:56 pm
Ответ #34

Mimi Neko

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 2454
  • Репутация:
    153
    • Просмотр профиля
Молодец! Рад за  тебя!  :)

Август 17, 2013, 05:53:07 am
Ответ #35

Gavot

  • Новичок

  • Оффлайн
  • *

  • 14
  • Репутация:
    2
    • Просмотр профиля
Мдааа... "Дело было не в бабине..."  Через ajax - отправляются и принимаются данные, но вот с получением всех данных от вконтакта, я похоже промахнулся. Т.е. часть кода работает:

        var parts=document.location.search.substr(1).split("&");
var flashVars={}, curr;
for (i=0; i<parts.length; i++)
{
curr = parts[i].split('=');
flashVars[curr[0]] = curr[1];
}
var viewer_id = flashVars['viewer_id'];
var auth_key = flashVars['auth_key'];

В ней мы получаем айди и ключ. А вот эта часть:
VK.api("getProfiles", {uids: viewer_id, fields:"first_name, last_name, photo"},function(data)Совсем не хочет выполняться. На сколько я понимаю, здесь дело не в данном коде, т.к. он похоже у всех работает (скорее всего и jQuery тоже у всех норм)... Но как это можно обойти? В настройках хостинга чего-то запрещено? Вот это у меня найти не получилось(((

На всякий случай засовываю всю хтмлку:

<html>

<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js' type='text/javascript'></script>
<script src=`http://vk.com/js/api/xd_connection.js?2` type="text/javascript"></script>
<script type="text/javascript" charset="cp1251" >
$(document).ready(function()
{
VK.init(function()
{
var parts=document.location.search.substr(1).split("&");
var flashVars={}, curr;
for (i=0; i<parts.length; i++)
{
curr = parts[i].split('=');
flashVars[curr[0]] = curr[1];
}
var viewer_id = flashVars['viewer_id'];
var auth_key = flashVars['auth_key'];
VK.api("getProfiles", {uids: viewer_id, fields:"first_name, last_name, photo"},function(data)
{
if (data.response) {
imya = data.response[0].first_name;
famylia = data.response[0].last_name;
photo = data.response[0].photo;
alert ("Ok");
}
});
});
});

</script>


</html>

Август 17, 2013, 06:45:22 am
Ответ #36

Mimi Neko

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 2454
  • Репутация:
    153
    • Просмотр профиля
У тебя в начале, в твой скрипт подключается скрипт из вк:

http://vk.com/js/api/xd_connection.js

видимо он и должен обеспечивать получение данных. его можно скачать и посмотреть.
В этом скрипте есть функция:
VK.api = function() {
  var args = Array.prototype.slice.call(arguments);
  var callback;
  if (VK._Rpc != null) {
    if (VK.isFunc(args[args.length-1])) {
      callback = args.pop();
    }
    if (!args[1]) {
      args[1] = {};
    }
    if (!args[1]['v'] && VK._v) {
      args[1]['v'] = VK._v;
    }
    VK._Rpc.ApiCall(args,callback);
  } else {
    VK._initQueue.push(function() {VK.api.apply(VK, args);});
    VK.init();
  }
};

Вот ещё поизучай:
http://vk.com/dev/IFrame_apps
http://habrahabr.ru/sandbox/43770/
« Последнее редактирование: Август 17, 2013, 06:54:12 am от Mimi Neko »

Август 17, 2013, 07:27:30 am
Ответ #37

Gavot

  • Новичок

  • Оффлайн
  • *

  • 14
  • Репутация:
    2
    • Просмотр профиля
Спасибо, за ссылки! На них и сижу. Там тонна информации  :)
Правда за последние часов 10 ничего не нашел... Хотя может и не то искал.
Сейчас, думаю, что чего-нибудь закрыто на самом хосте с сылками на скрипты (хотя яндекс с гуглом уже обшарил). Попытка засунуть xd_connection.js к себе на сайт и попытка подсунуть функцию в саму хтмлку ничего не дали. В принципе - эту функцию можно тоже заменить на ajax, который работает ( в поисках где-то даже находил описание), но эту фишку оставлю на тот момент когда окончательно опустятся руки  :) Просто не может это вк апи не работать только у меня. По этому и думаю, что чего-нибудь перекрыто  :)

Август 17, 2013, 07:37:58 am
Ответ #38

Mimi Neko

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 2454
  • Репутация:
    153
    • Просмотр профиля
Дак проверяй всё по этапам. может дело в твоём браузере вообще.

сделай тестовый фрейм, протестируй, проходит ли вообще инициализация в вк:

<script type="text/javascript">
   VK.init(function() {
     
        alert("API initialization OK!");
     
   }, function() {
 
        alert("API initialization failed!");

 }, '5.0');
 </script>
« Последнее редактирование: Август 18, 2013, 00:49:08 am от Mimi Neko »

Август 17, 2013, 07:44:33 am
Ответ #39

Mimi Neko

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 2454
  • Репутация:
    153
    • Просмотр профиля
Если инициализация проходит - помещай туда функцию запросов к API вк:

VK.api("Имя_метода", {параметры}, function(data) {

     // Действия с полученными данными

 });

Описание всех методов для этой функции тут:
http://vk.com/dev/methods

короче получай нужные тебе параметры, и пробуй вывести результат через алерты. Как добъёшся чтобы параметры добывались и выводились - считай что основное сделано.

Август 17, 2013, 08:02:08 am
Ответ #40

Gavot

  • Новичок

  • Оффлайн
  • *

  • 14
  • Репутация:
    2
    • Просмотр профиля
Спасибо! Пойду копаться в методах и параметрах. Как получится, отпишусь  :)

Август 17, 2013, 14:55:30 pm
Ответ #41

ikari-shinji

  • Новичок

  • Оффлайн
  • *

  • 3
  • Репутация:
    0
    • Просмотр профиля
скиньте пожалуйста все необходимое у кого есть

Август 17, 2013, 15:32:14 pm
Ответ #42

Gavot

  • Новичок

  • Оффлайн
  • *

  • 14
  • Репутация:
    2
    • Просмотр профиля
Мдаа... Спустя н-часов меняния user_ids=>uids=>uid=>'user_ids' и так далее... А также ползания по вгуглам и въяндексам с разными запросами....'МНОГО НОВОГО УЗНАЛ) А в итоге, ларчик просто открывался - оказывается реквест не приходит, если в настройках приложения не включено "приложение включено и доступно всем"....
Еще раз, спасибо! Акцентировав внимание на ссылки, узнал еще много чего еще пригодится  :)

Август 17, 2013, 15:35:25 pm
Ответ #43

Gavot

  • Новичок

  • Оффлайн
  • *

  • 14
  • Репутация:
    2
    • Просмотр профиля
Рабочий код сейчас такой, если кто еще будет с таким запросом ползать в инете:

...
VK.api('users.get', {user_ids : viewer_id}, function(data)
...

viewer_id - айди в контакте, собственно как и в самом первом посте
« Последнее редактирование: Август 17, 2013, 15:37:04 pm от Gavot »

Август 19, 2013, 06:05:00 am
Ответ #44

Gavot

  • Новичок

  • Оффлайн
  • *

  • 14
  • Репутация:
    2
    • Просмотр профиля
И снова я... И минус еще одна ночь  :)
В этот раз бьюсь над тем, чтобы показывалось фото. И оно ПОКАЗЫВАЕТСЯ, пока сижу у себя в юнити с забитым айди вк и кодом авторизации.
Но... Только стоит убрать и скомпилить получается интересный вариант:

В текстовом гуи есть айдишник с контакта - ура
В текстовом гуи есть код авторизации - ура
А вот фото - нет...

ПОЧЕМУ? О_О
Какая разница между этими двумя функциями по отношению с вытянутым айди из хтмл?:

function OnGUI () {
GUI.Label (Rect (25, 25, 200, 300), "viewer_id:" + viewer_id);
GUI.Label (Rect (25, 45, 200, 300), "auth_key: " + auth_key);
}


function Update () {
if (viewer_id != "" && auth_key != "") {
if(connectSQL == 0) {
connect_server ("test.ru/","getprofiles.php","id="+ viewer_id) ;
connectSQL = 1 ;
}
}
}

Т.е. все нужное явно доходит до конца, если жестко определить айди вконтакта. Но если его не определять, то в одном месте доходит, а в другом нет.
« Последнее редактирование: Август 19, 2013, 06:13:17 am от Gavot »