@@ -79,25 +79,58 @@ func (ps *PageService) GetOwnedPages(ctx context.Context, businessID string) ([]
79
79
80
80
// GetInstagramUsers returns all instagram accounts.
81
81
func (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 {
86
88
return nil , err
87
89
}
88
90
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
90
106
}
91
107
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 {
97
115
return nil , err
98
116
}
99
117
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
101
134
}
102
135
103
136
// Get returns a single page.
0 commit comments