Do Facebook Graph API calls using field expansion

2019-02-16 13:44发布

I am looking to optimize my Facebook app.

Today I make a batch call with four graph API calls:

/me
/me/friends
/me/likes
/me/feed

If I change this to a single graph API call using field expansion like this:

/me?fields=id,name,username,friends,likes,feed

Will that now count as one hit against the API instead of four for rate limiting purposes?

3条回答
兄弟一词,经得起流年.
2楼-- · 2019-02-16 14:20

According to the Facebook Docs,

The Field Expansion feature of the Graph API, allows you to effectively "join" multiple graph queries into a single call.

So your queries above would represent four calls in the Batch form, and one call in the Field Expanded form.

As I noted in a comment above: A batch sends multiple-but-not-necessarily-related queries to Facebook in a single request. Field expansion is like doing joins in SQL through a single query.

查看更多
霸刀☆藐视天下
3楼-- · 2019-02-16 14:21

Based on real-world testing, I've found that field expansion can count for multiple uses under the rate limit. For example, starting from a quiet state, a sequence of 63 field-expanded calls to a single api (graph.facebook.com/IDENTITY/posts) brought us to the 600 call rate limit.

查看更多
狗以群分
4楼-- · 2019-02-16 14:45

Unfortunately, each call in the batch is counted as an api call, it's just faster to call them within a batch since it will be 1 request. See here documentation on Facebook API:

Limits
We currently limit the number of requests which can be in a batch to 50, but each call within the batch is counted separately for the purposes of calculating API call limits and resource limits. For example, a batch of 10 API calls will count as 10 calls and each call within the batch contributes to CPU resource limits in the same manner.

Source: https://developers.facebook.com/docs/reference/api/batch/

查看更多
登录 后发表回答