2017-05-05 3 views
2

J'ai un problème avec le Account Management API pour Facebook en milieu de travail. Tout ce que j'essaie de faire est de créer un annuaire des employés rapide et facile, qui saisit tous nos utilisateurs actifs et crache leur nom, titre, département et photos. Le problème est que les données qui reviennent ne semblent pas correspondre au schéma de base Facebook tel que vu dans le lien ci-dessus. Certaines données du schéma reviennent, mais jamais les photos, peu importe ce que je semble essayer.Facebook en milieu de travail API de gestion de compte non retour Photos

private function getEmployees() 
{ 
    $done = false; 
    $current_index = 1; 
    $current_page = 1; 
    $results = []; 

    while(!$done) { 

     $res = $this->client->request(
      'GET', 
      'https://www.facebook.com/company/XXXXXXXXX/scim/Users?count=100&startIndex=' . $current_index, 
      [ 
       'headers' => ['Accept' => 'application/json', 
        'Content-Type' => 'application/json', 
        'Authorization' => 'Bearer ' . $this->token 
       ] 
      ] 
     ); 

     $decoded = json_decode($res->getBody()); 
     $total = $decoded->totalResults; 
     $perPage = $decoded->itemsPerPage; 

     if (isset($decoded->Resources)) { 
      $results = array_merge($results, $decoded->Resources); 

      if (($current_page * $perPage) >= $total) { 
       $done = true; 
      } else { 
       $current_page++; 
       $current_index += $perPage; 
      } 
     } else { 
      $done = true; 
     } 

    } 

    return $results; 
} 

Ce qui rend:

object(stdClass)[392] 
public 'schemas' => 
array (size=3) 
    0 => string 'urn:scim:schemas:core:1.0' (length=25) 
    1 => string 'urn:scim:schemas:extension:enterprise:1.0' (length=41) 
    2 => string 'urn:scim:schemas:extension:facebook:starttermdates:1.0' (length=54) 
public 'id' => int 10001156699923 
public 'userName' => string '[email protected]' (length=21) 
public 'name' => 
object(stdClass)[393] 
    public 'formatted' => string 'Nick P' (length=11) 
public 'title' => string 'Lead PHP Engineer' (length=17) 
public 'active' => boolean true 
public 'phoneNumbers' => 
array (size=1) 
    0 => 
    object(stdClass)[394] 
     public 'primary' => boolean true 
     public 'type' => string 'work' (length=4) 
     public 'value' => string '+1631123456' (length=12) 
public 'addresses' => 
array (size=1) 
    0 => 
    object(stdClass)[395] 
     public 'type' => string 'attributes' (length=10) 
     public 'formatted' => string 'Manhattan' (length=9) 
     public 'primary' => boolean true 
public 'urn:scim:schemas:extension:enterprise:1.0' => 
object(stdClass)[396] 
    public 'department' => string 'IT' (length=2) 
    public 'manager' => 
    object(stdClass)[397] 
     public 'managerId' => int 100011017901494 
public 'urn:scim:schemas:extension:facebook:starttermdates:1.0' => 
object(stdClass)[398] 
    public 'startDate' => int 0 
    public 'termDate' => int 0 

Comme vous pouvez le voir, il retourne d'autres domaines qui font partie du schéma « de base », mais il manque le tableau « photos » et d'autres. Je pensais que cela pourrait avoir été parce qu'un utilisateur n'avait pas de photos, mais presque tous ont des photos de profil, et beaucoup ont plus. J'ai essayé d'obtenir leurs informations d'utilisateur spécifiquement mais j'ai rencontré le même résultat, pas de photos.

Tout le monde jamais essayer quelque chose de similaire? Toute aide très appréciée, cela a été un peu un barrage routier pour nous.

Merci

Répondre

1

Pour obtenir des informations de profil, ne pas utiliser SCIM mais API graphique https://graph.facebook.com/community/members listera tous les membres

et https://graph.facebook.com/[email] pour l'un de vos membres obtenir tous les infos.

Après cela, vous devez définir les params que vous voulez obtenir avec les champs param.

Dans notre implémentation, nous obtenons l'ensemble des données de cette demande

https://graph.facebook.com/XXXX/members?fields=email,picture.type(large),link,title,first_name,last_name,department,updated_time,managers {email} & limit = 500

+0

J'avais l'impression que je ne pouvais pas utiliser l'API régulière graphique pour le milieu de travail? J'ai juste besoin d'une liste de tous nos employés comprenant leur nom, titre, email, photo, pas profondément l'information de profil. L'autre problème était que l'API Graph nécessitait un flux d'authentification plus strict utilisant OAuth2, qui devrait être autorisé par quelqu'un à chaque fois, ou 3 mois en utilisant un jeton à long terme. SCIM nécessite uniquement une clé dans la demande actuelle. Si Graph était disponible pour Workplace et était le seul moyen de le faire, je changerais. Mais les docs disent que les données devraient revenir avec SCIM donc je préférerais ça. –

+0

Cette solution a fonctionné. J'ai été en mesure d'obtenir toutes les données que je voulais, sans utiliser OAuth2. Je vous remercie. –