2013-12-19 5 views
4

У меня есть следующий вызов API Графа: me/accounts?fields=access_token,name,id,perms, который я использую для получения токенов страницы от пользователя.Как фильтровать страницы Facebook по разрешению CREATE_CONTENT?

Теперь я хотел бы отфильтровать это на perms="CREATE_CONTENT". Как я могу отфильтровать этот вызов API Графа?

Я использую C# Facebook.net SDK. В настоящее время я использую этот код:

client.Post("me/accounts", new { fields = "access_token,name,id,perms" });

ответ

0

Оговорка: не знаю C#, но я регулярно работаю с Facebook на других языках программирования.

Facebook имеет номер "Publish Permissions" как часть своих Расширенных разрешений. Я предполагаю, что вы уже запрашиваете одно или несколько из этих разрешений от ваших пользователей. (Я не вижу список create_content, это единственная причина, о которой я упоминаю.) Скажем, например, вы запросили разрешение create_event от ваших пользователей.

Попробуйте аккумулировать идентификаторы пользователей Facebook в список, а затем выдавать запрос FQL с помощью клиента Facebook SDK для разрешения (ы) вы заинтересованы в:

List<int> facebookUserIds = new List<int>(1, 2, 3); 
var query = string.Format("SELECT uid, create_event FROM permissions WHERE uid IN ({})", string.Join(",", facebookUserIds)); 

dynamic parameters = new ExpandoObject(); 
parameters.q = query; 
dynamic results = client.Get("/fql", parameters); 

ответ вы получите, будет иметь свойства, как это (здесь, в формате JSON):

{ 
    "data": [ 
    { 
     "uid": 1, 
     "create_event": 1 
    }, 
    { 
     "uid": 2, 
     "create_event": 0 
    } 
    { 
     "uid": 3, 
     "create_event": 0 
    } 
    ] 
} 

конечно, 0 означает разрешение отказано, и 1 означает разрешение, выданное для ID приложения вы используете для проверки подлинности с помощью API Facebook.

Примечание: пользователи будут возвращены только в ответ, если они ранее аутентифицировали ваше приложение (самого базового уровня разрешений); но это не должно быть проблемой.

0

Вы не можете непосредственно фильтровать это в API, но это было бы очень легко сделать из C# - вы получаете в ICollection от ответа Facebook.JSONObject, поэтому вы можете просто использовать linq для его фильтрации - Filtering collections in C# имеет довольно хорошее объяснение того, как этого добиться.

+0

Я читал что-то о том, что FQL сможет запросить? –

+0

Вы не сможете увидеть токен доступа к странице, если вы это сделаете. –

Смежные вопросы