Java-скрипт и открытый граф facebook

Я запускаю приложение javascript, и часть его работает так:

document.write("<param name='nick' value='" + nick + "'>\n");

В <param ....> я не могу вызвать URL-адрес графа API (это дает мне ошибку javascript), поэтому мне нужно вызвать его раньше, затем взять его как переменную и поместить в <param>. Теперь я пробовал много способов сделать это без везения, поэтому мне нужна помощь для этого:

call "the_url/me?fields="firstname" <- this works every time, php, java, html,... 

и теперь, что, кажется, доставляет мне много проблем, установите ответ в переменной или что-то в этом роде:

nick = arg1[]
id = arg2[]
and take it in the document.write() 

document.write("<param name='nick' value='" + nick + "'>\n");
document.write("<param name='id' value='" + id + "'>\n");

Иногда он устанавливает все в первую переменную; в других случаях он ничего не возвращает, или что-то не то не в том месте, или .... (я думаю, вы поняли).

Может быть, я что-то упускаю, упускаю из виду простой способ или не использую право возврата, я новичок в opengraph и, возможно, у меня это не так .... Я больше не знаю, поэтому мне нужна помощь или совет

Обновлять:

я использовал fb.api вот так

    function ShowMyName() {
        FB.api("/me", function (response) {
            document.jform.nick.value = response.name ; 
                });
}

затем используйте форму, чтобы у людей была возможность изменить ник, прежде чем они начнут, странная вещь в этом заключается в том, что когда я вызываю функтоин с предупреждением, он дает мне имя, но другая часть дает мне неотличимый возврат, вот почему я спросил за помощью, я не понимаю, почему msgbox работает с одним и тем же скриптом, а другая часть остается неизменной, это тот же скрипт

так это работает:

    <button name="my_full_name" onclick="testbut()" value="My Name" />
<script language="javascript" type="text/javascript">
function testbut() {
        FB.api("/me",
                function (response) {
                    alert('Name is ' + response.name);
                });

    }
</script>

и на том же скрипте это не сработает,

    function ShowMyName() {
        FB.api("/me", function (response) {
            document.jform.nick.value = response.name ; 
                });
}

я уверен, что документ правильный, потому что я могу поместить что угодно в ценную часть, и это появится ....


person Sounix Souleke    schedule 11.11.2011    source источник


Ответы (1)


Я ненавижу давать ответ, который начинается со ссылки на документацию, но похоже, что это ваше первое приложение. На этот точный вопрос отвечает документация в качестве примера здесь: https://developers.facebook.com/docs/reference/javascript/

Этот вызов должен быть сделан асинхронно, поскольку вы ожидаете удаленных данных. Затем вам нужно выполнить функцию обратного вызова при получении данных, иначе ваши переменные будут пустыми, и ваш код сломается. API OpenGraph JavaScript хорошо справляется с этой задачей.

По сути, вам нужно сделать вызов асинхронно и выполнить вызовы document.write() как часть вашей функции обратного вызова. Итак, после того, как вы прошли аутентификацию и все такое, сделайте что-то вроде этого:

FB.api('/me', function(response) {
  nick = response.name;
  document.write("<param name='nick' value='" + nick + "'>\n");
});
person Metagrapher    schedule 11.11.2011
comment
спасибо за ответ, но я пробовал это, а также это работает, когда я использую предупреждение(), но когда я пробую это в коде, я всегда получаю неопределенность - person Sounix Souleke; 12.11.2011
comment
Спасибо за помощь. Все, что я пробовал, работало, но все, что мне нужно было сделать, это вызвать функцию, ваш ответ заставил меня задуматься об этом - person Sounix Souleke; 13.11.2011
comment
Я рад, что это заставило вас задуматься о функциях обратного вызова... это в значительной степени именно то, о чем я говорил :) PS: я почти уверен, что вы получаете репутацию за принятие ответов... И у вас больше шансов получить ответы в будущее. ;) Ура и счастливого кодирования! - person Metagrapher; 17.11.2011