2017-05-05 6 views
2

Facebook WorkplaceのAccount Management APIに問題があります。私がしようとしているのは、すばやく簡単な従業員ディレクトリを構築することです。これは、アクティブなユーザー全員をつかんで、氏名、役職、部署、写真を吐き出します。問題は、戻ってくるデータが上記のリンクに見られるようにFacebookコアスキーマと一致していないようです。スキーマデータの一部は返されますが、私は何をしようとしているかにかかわらず、写真は返されません。バック与えFacebook Workplace Account Management APIが返品しない写真

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; 
} 

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 

だから、あなたが見ることができるように、それは「コア」スキーマの一部である他のフィールドを返しますが、「写真」配列などが不足しています。ユーザーが写真を持っていなかったので、ほとんどの人がプロフィール写真を持っていて、多くの人がもっと写真を持っていたからかもしれないと思った。ユーザー情報を具体的に取得しようとしましたが、同じ結果、写真が見つかりませんでした。

これまで誰かが似たようなことを試してみませんか?どんな助けも大歓迎です、これは私たちのための少しの道のりです。プロファイル情報を取得するには

おかげ

答えて

1

https://graph.facebook.com/community/members SCIMが、グラフAPIを使用していないが、すべてのメンバー、あなたのメンバーのいずれかの

https://graph.facebook.com/[email]はすべてに関する情報を取得します一覧表示されます。

その後、フィールドparamで取得するパラメータを設定する必要があります。私たちはこの要求

https://graph.facebook.com/XXXX/members?fields=email,picture.type(large),link,title,first_name,last_name,department,updated_time,managers {メール} &リミット= 500

+0

からの全データを取得し、当社の実装で

私は職場のための定期的なグラフAPIを使用することができなかった印象の下にありましたか?私は名前、タイトル、電子メール、写真、深いプロフィールの情報を含めて、すべての従業員のリストが必要です。もう1つの問題は、Graph APIがOAuth2を使用してより厳密な認証フローを要求したことです。これは誰かが毎回認可しなければならないか、または長期トークンを使用して3か月間です。 SCIMは実際の要求でキーを要求するだけです。 グラフが職場で利用可能で、これを実行する唯一の方法だった場合、私は切り替えます。しかし、文書は、データがSCIMに戻ってきて、私がそれを好むべきだと言います。 –

+0

このソリューションは機能しました。 OAuth2を使わずに、私が望むすべてのデータを手に入れることができました。ありがとうございました。 –

関連する問題