2011-06-20 9 views
10

Próbuję uzyskać przykład działającej strony Facebooka, którą można znaleźć pod adresem here. Dostaję następujący błąd:Błąd protokołu OAuth w serwisie Facebook: Limit żądania aplikacji osiągnął wartość

Fatal error: Uncaught OAuthException: (#4) Application request limit reached thrown in C:\wamp\www\base_facebook.php on line 988 

Mam google to i problem wydaje się być łatwo ustalony za pomocą kroków opisanych here. Jednak, gdy odwiedzam stronę facebook.com/insights, moja aplikacja nie jest wymieniona (jestem zalogowany).

Dziwniejsze jest to, że gdy wchodzę do mojej aplikacji przez programistów> Moje aplikacje, mogę przejść do strony mojej aplikacji i kliknąć "Informacje". To prowadzi mnie do strony Statystyki mojej aplikacji ... ale sekcji diagnostycznej nigdzie nie można znaleźć. Czy ktoś może pomóc?

+0

Przeczytajmy poniżej artykułu [osiągnięta granica Zapytanie Facebook Application] [1] [1]: http://stackoverflow.com/questions/9272391/facebook-application-request-limit-reached – redwind

+0

Czy możesz sprawdzić json jest włączony na twoim wamprze – Warrior

Odpowiedz

6

Przedstawiona sposób dowiedzieć się, dlaczego tak się dzieje:

  1. Zaloguj się https://developers.facebook.com/apps/
  2. Ostatni app masz edytowane powinno już być załadowany po prawej stronie; jeśli nie, znajdź swoją aplikację po lewej stronie i kliknij nazwę.
  3. Przewiń w dół, aż zobaczysz sekcję Insights i kliknij See All.
  4. Z menu po lewej stronie wybierz API > Activity & Errors.
+2

Co zrobić, jeśli używasz graph.facebook.com/?id= ? –

2

Jeśli się żądanie GET do jednego z punktów końcowych wykres FB API, które nie wymagają access_token to nie znaczy, że nie powinny zawierać go w żądaniu parametru. Jeśli zrobisz to jako dokumentacja FB, ponieważ nie zawierają to access_token niż po stronie serwera FB, to rejestruje się on na twoim serwerze. Tak więc ograniczenie (bez względu na to, ile dokładnie jest) może być osiągnięte bardzo łatwo. Jeśli jednak umieścisz token dostępu użytkownika w żądaniu (& access_token = XXXXXX), wówczas zażąda zarejestrowania się w określonym użytkowniku, więc limit nie jest prawie nigdy osiągalny. Możesz przetestować go za pomocą prostego skryptu, który wykonuje 1000 żądań z i bez użytkownika access_token.

UWAGA, token dostępu do aplikacji FB nie będzie wystarczający, ponieważ napotkasz ten sam problem: zgłoszenia będą rejestrowane w aplikacji access_token, podobnie jak w przypadku sytuacji, w której żądania nie mają dostępu.

3

Urządzenie Facebook "Graph API Rate Limiting" docs mówi, że błąd o kodzie #4 to app level rate limit, który jest inny niż user level rate limits. Mimo że nie podaje żadnych dokładnych liczb, opisuje ich limit stawek na poziomie aplikacji:

This rate limiting is applied globally at the app level. Ads api calls are excluded.

  • Rate limiting happens real time on sliding window for past one hour.
  • Stats is collected for number of calls and queries made, cpu time spent, memory used for each app.
  • There is a limit for each resource multiplied by monthly active users of a given app.
  • When the app uses more than its allowed resources the error is thrown.
  • Error, Code: 4, Message: Application request limit reached

Dokumenty zawierają również zalecenia dotyczące unikania limitów stawek. Na granicach poziomu aplikacji, są to:

Recommendations:

  • Verify the error code (4) to confirm the throttling type.
  • Do not make burst of calls, spread out the calls throughout the day.
  • Do smart fetching of data (important data, non duplicated data, etc).
    • Real-time insights, make sure API calls are structured in a way that you can read insights for as many as Page posts as possible, with minimum number of requests.
    • Don't fetch users feed twice (in the case that two App users have a specific friend in common)
    • Don't fetch all user's friends feed in a row if the number of friends is more than 250. Separate the fetches over different days. As an option, fetch first the app user's news feed (me/home) in order to detect which friends are more important to the App user. Then, fetch those friends feeds first.
  • Consider to limit/filter the requests by using the following parameters: "since", "until", "limit"
  • For page related calls use realtime updates to subscribe to changes in data.
  • Field expansion allows ton "join" multiple graph queries into a single call.
  • Etags to check if the data querying has changed since the last check.
  • For page management developers who does not have massive user base, have the admins of the page to accept the app to increase the number of users.

Wreszcie docs podać następujące wskazówki informacyjne:

  • Batching calls will not reduce the number of api calls.
  • Making parallel calls will not reduce the number of api calls.
+0

Hej dziękuję za dodanie tego do mojego pytania, mimo że ma 3 lata. Nie jestem pewien, czy to odpowiada na moje pytanie, ale mam nadzieję, że pomoże komuś w przyszłości – tnw

+0

@ tnw Ja też! Obecnie debuguję ten sam problem (kod błędu "# 4"), a wiele innych źródeł błędnie mówi, że limit wynosi "600 połączeń na 600 sekund". Może tak być, ale uważam, że dotyczy to tylko tokenów dostępu użytkownika, a nie tokenów aplikacji. –

Powiązane problemy