Доступ к данным тестового пользователя с помощью API Graph Facebook - PullRequest
0 голосов
/ 23 ноября 2011

Я пытаюсь найти друзей тестового пользователя, используя api facebook graph, но он возвращает только идентификаторы друзей, но не другие данные, такие как first_name, last_name и т. Д. Это работает, хотя с реальными пользователями.Я специально передаю поля, которые мне требуются (запрос выглядит примерно так):

https://graph.facebook.com/me/friends?access_token=...&fields=id%2Cfirst_name%2Clast_name%2Cgender%2Clocale%2Clink%2Clocation%2Cbirthday%2Creligion%2Crelationship_status

Токен доступа - это токен, предоставленный тестовому пользователю, когда тестовый пользователь входит в мое приложение.

Я нашел аналогичный пост SO, но я не уверен, какое решение предлагается.

Запрос пользователей теста через Facebook Graph API

1 Ответ

1 голос
/ 23 ноября 2011

Вам необходимо использовать приложение access_token, и это можно проверить в Graph API Explorer, выполнив следующие действия:

  1. Перейдите к инструменту Access Token и скопируйтеваше приложение access_token
  2. Перейдите на Graph API Explorer и выберите ваше приложение из выпадающего списка.
  3. Запрос APP_ID/accounts/test-users?access_token=app_access_token это приведет к получению тестовых пользователей
  4. нажмите на один из идентификаторов (убедитесь, что этот пользователь дружит хотя бы с одним другим тестовым пользователем) и измените запрос так: TEST_USER_ID/friends?fields=first_name,last_name,gender&access_token=app_access_token
  5. Готово!: -)

ОБНОВЛЕНИЕ :
Основываясь на комментариях ниже, я попытался получить день рождения друзей тестового пользователя, но результаты оказались противоречивыми,

  • Использование тестового пользователя access_token: Идентификаторы, дни рождения и пол были получены, но не имена
  • Использование приложения access_token: Идентификаторы, имена и пол были получены, но не дни рождения

Вот простой код:

<html xmlns:fb="http://www.facebook.com/2008/fbml">
<head></head>
<body>
<div id="fb-root"></div>
<script>
// You can retrieve this from: https://developers.facebook.com/tools/access_token/
var app_access_token = "APP_ACCESS_TOKEN";
  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'APP_ID_HERE', // App ID
      channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
      status     : true, // check login status
      cookie     : true, // enable cookies to allow the server to access the session
      oauth      : true, // enable OAuth 2.0
      xfbml      : true  // parse XFBML
    });

    // Additional initialization code here
  };

  // Load the SDK Asynchronously
  (function(d){
     var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
     js = d.createElement('script'); js.id = id; js.async = true;
     js.src = "//connect.facebook.net/en_US/all.js";
     d.getElementsByTagName('head')[0].appendChild(js);
   }(document));
</script>

<table id="friends">
    <tr>
        <th>ID</th>
        <th>Name</th>
        <th>Gender</th>
        <th>Birthday</th>
    </tr>
</table>

<script>
function login(app) {
    FB.login(function(response) {
        if (response.authResponse) {
            var obj = {fields: 'name,gender,birthday', limit: 500};
            if(app)
                obj.access_token = app_access_token;
            FB.api('/'+response.authResponse.userID+'/friends', 'GET', obj, function(response) {
                console.log(response);
                if(response && response.data.length) {
                    var html = '';
                    for(var i=0; i<response.data.length; i++) {
                        html += "<tr>";
                        html += "<td>" + response.data[i].id + "</td>";
                        html += "<td>" + response.data[i].name + "</td>";
                        html += "<td>" + response.data[i].gender + "</td>";
                        html += "<td>" + response.data[i].birthday + "</td>";
                        html += "</tr>";
                    }
                    document.getElementById("friends").innerHTML += html;
                }
            });
        } else {
            console.log('User cancelled login or did not fully authorize.');
        }
    }, {scope: 'user_birthday,friends_birthday'});

}
</script>
<button onclick="login();">List Friends With User Token</button>
<button onclick="login(1);">List Freinds With App Token</button>
</body>
</html>

Результат с использованием одного измои тестовые учетные записи пользователей:
enter image description here
Первые три строки были получены с помощью " Список друзей с токеном пользователя ", а остальные с " Список друзей с токеном приложения ».

Итог, это требует внимания Facebook!

...