Проблема с функцией Facebook friends_get - PullRequest
1 голос
/ 11 июня 2009

Предполагается, что приведенный ниже фрагмент позволяет получить список друзей из профиля пользователя Facebook в моем приложении:

<script 
  type="text/javascript"
  src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php">
</script> 
<script type="text/javascript">
  FB_RequireFeatures(
    ["XFBML"],
    function() {
      FB.Facebook.init("xxxxxxxx","xd_receiver.htm"); 
      FB.Facebook.get_sessionState().waitUntilReady(
        function() {
          FB.Facebook.apiClient.friends_get(
            null,
            function(result,ex){window.alert("friends list :" + result);}
          );
        }
      );
    }
  );
</script>

Вместо имени моих друзей я получаю целое число. Я не мог догадаться почему. Было бы неплохо узнать, почему мой подход не работает.

Ответы [ 2 ]

2 голосов
/ 21 июня 2009

Ваш подход работает, но как Задокументированная на вики-сайте Facebook Developer, функция FB.ApiClient.Friends_get , которую вы вызываете, не возвращает имена друзей, она возвращает массив их идентификаторов которые являются большими (часто больше, чем целые) числовыми значениями. Вам нужно будет использовать дополнительную функцию FB.ApiClient.users_getInfo , чтобы вернуть имена пользователей. Вам также не нужно вызывать FB.Facebook.ApiClient, вы можете напрямую обойти объект Facebook с помощью FB.ApiClient.

Вот пример (не проверенный, но должен дать вам идею):

<script type="text/javascript" src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php"></script> 
<script type="text/javascript">
  FB_RequireFeatures(
    ["XFBML"],
    function() {
      FB.Facebook.init("xxxxxxxx","xd_receiver.htm"); 
      FB.Facebook.get_sessionState().waitUntilReady(
        function() {
          FB.ApiClient.friends_get(
            null,
            function(result,ex) {
              FB.ApiClient.users_getInfo(result, 'name',
                function(friendNames, exec) {
                  window.alert("first name in friends list: " + friendsNames[0]);
                }
              )
            }
          );
        }
      );
    }
  );
</script>
0 голосов
/ 18 августа 2009

Я считаю, что вы должны сделать:

FB.ApiClient.friends_get(
            new Array(),

Что я видел на сайте разработчика.

...