@@ -79,25 +79,58 @@ func (ps *PageService) GetOwnedPages(ctx context.Context, businessID string) ([]
7979
8080// GetInstagramUsers returns all instagram accounts.
8181func (ps * PageService ) GetInstagramUsers (ctx context.Context , businessID string ) ([]InstagramUser , error ) {
82- res := []InstagramUser {}
83- route := fb .NewRoute (Version , "/%s/instagram_accounts" , businessID ).Limit (1000 ).Fields (instagramUserFields ... )
84- err := ps .c .GetList (ctx , route .String (), & res )
85- if err != nil {
82+ type Page struct {
83+ ID string `json:"id"`
84+ }
85+ var pages []Page
86+ pageRoute := fb .NewRoute (Version , "/%s/accounts" , businessID ).Fields ("id" ).Limit (100 )
87+ if err := ps .c .GetList (ctx , pageRoute .String (), & pages ); err != nil {
8688 return nil , err
8789 }
8890
89- return res , nil
91+ var igUsers []InstagramUser
92+ for _ , page := range pages {
93+ var wrapper struct {
94+ InstagramAccount * InstagramUser `json:"instagram_business_account"`
95+ }
96+ igRoute := fb .NewRoute (Version , "/%s" , page .ID ).Fields ("instagram_business_account{id,username}" )
97+ if err := ps .c .GetJSON (ctx , igRoute .String (), & wrapper ); err != nil {
98+ continue
99+ }
100+ if wrapper .InstagramAccount != nil {
101+ igUsers = append (igUsers , * wrapper .InstagramAccount )
102+ }
103+ }
104+
105+ return igUsers , nil
90106}
91107
92- func (aas * PageService ) ListIGUsers (ctx context.Context ) ([]InstagramUser , error ) {
93- res := []InstagramUser {}
94- rb := fb .NewRoute (Version , "/me/instagram_accounts" ).Limit (1000 ).Limit (1000 ).Fields (instagramUserFields ... )
95- err := aas .c .GetList (ctx , rb .String (), & res )
96- if err != nil {
108+ func (ps * PageService ) ListIGUsers (ctx context.Context ) ([]InstagramUser , error ) {
109+ type Page struct {
110+ ID string `json:"id"`
111+ }
112+ var pages []Page
113+ pageRoute := fb .NewRoute (Version , "/me/accounts" ).Fields ("id" ).Limit (100 )
114+ if err := ps .c .GetList (ctx , pageRoute .String (), & pages ); err != nil {
97115 return nil , err
98116 }
99117
100- return res , nil
118+ // Step 2: Get IG account from each page
119+ var igUsers []InstagramUser
120+ for _ , page := range pages {
121+ var wrapper struct {
122+ InstagramAccount * InstagramUser `json:"instagram_business_account"`
123+ }
124+ igRoute := fb .NewRoute (Version , "/%s" , page .ID ).Fields ("instagram_business_account{id,username}" )
125+ if err := ps .c .GetJSON (ctx , igRoute .String (), & wrapper ); err != nil {
126+ continue
127+ }
128+ if wrapper .InstagramAccount != nil {
129+ igUsers = append (igUsers , * wrapper .InstagramAccount )
130+ }
131+ }
132+
133+ return igUsers , nil
101134}
102135
103136// Get returns a single page.
0 commit comments