Ogłoszenie

Zwiń
No announcement yet.

Błędy przy wysyłaniu powiadomień - "You have exceeded limit for accessing API"

Zwiń
X
 
  • Filtr
  • Czas
  • Pokaż
Wyczyść wszystko
new posts

    Błędy przy wysyłaniu powiadomień - "You have exceeded limit for accessing API"

    Podczas wysyłania powiadomienia do konkretnej osoby (aczkolwiek nie do każdej) aplikacja wyrzuca mi następujący wyjątek:

    Kod:
    exception 'GGAPIBadRequestException' with message 'invalid_grant' in [I]****[/I]/GGAPI.php:489
    Stack trace:
    #0 [I]****[/I]/GGAPI.php(398): GGAPI->ggApiRequest('POST', 'https://auth.ap...', Array, NULL, false, NULL)
    #1 [I]****[/I]/GGAPI.php(339): GGAPI->doRequest('POST', 'https://auth.ap...', Array)
    #2 [I]****[/I]/GGAPI.php(403): GGAPI->refreshToken()
    #3 [I]****[/I]/GGAPI.php(162): GGAPI->doRequest('POST', 'https://notific...', Array, Array)
    #4 [I]****[/I]/checker.php(48): GGAPI->sendNotification('Nowe powiadomie...', '/index.php?user...', true, 1350221347)
    #5 {main}Blad lokalny: exception 'GGAPIForbiddenException' with message 'You have exceeded limit for accessing API' in ****/GGAPI.php:485
    Pytanie brzmi: jak poradzić sobie z tego typu błędem? Przekroczyłem jakiś nieznany mi limit dostępu do API, ale czy ten limit sam się odnawia czy konieczne jest inne działanie? Sytuacja trwa od dłuższego czasu.
    Ostatnio edytowany przez Qrix; [ARG:4 UNDEFINED].

    #2
    Obecne limity to 1 na 5 minut, 100 na dobę.
    sigpic 5GB
    http://www.gg.pl/info/pobierz/

    Komentarz


      #3
      Hmm, jesteś pewny, że jeden na 5 minut? Dostałem nie raz od swojej aplikacji kilka powiadomień w tak krótkim czasie.

      Ale ja nie o tym. Chodzi o to, że aplikacja od 4 dni wywala wspomniany wyżej i niżej błąd, zatem albo została automatycznie zbanowana, albo błąd jest gdzie indziej. Czy w momencie gdy owe limity przekroczę (a zapewne tak się stało sądząc po komunikacie) to aplikacja już nie będzie działała? Od kilku godzin w cronie nie mam już skryptu, który wysyła okresowo rzeczone powiadomienia, więc żadnych błędów nie miała okazji popełnić. Przy ręcznym uruchomieniu API nadal nie chce mnie jednak wpuścić.
      Wspomniany skrypt najpierw inicjuje bibliotekę GGAPI PHP, a następnie w pętli wysyła powiadomienia do wielu użytkowników, zawsze jedno do jednego usera. Tych użytkowników może być maksymalnie 215 (tyle mam w bazie), ale najczęściej w jednym wykonaniu skryptu powiadomienia wysyłane są do max 3-4 osób (o ile w ogóle są jakieś wysyłane), choć w tym momencie zakolejkowanych mam ich dużo więcej ze względu na brak dostępu do API.

      Kod:
      Stack trace:
      #0 ****/GGAPI.php(398): GGAPI->ggApiRequest('POST', 'https://notific...', Array, Array, false, NULL)
      #1 ****/GGAPI.php(162): GGAPI->doRequest('POST', 'https://notific...', Array, Array)
      #2 ****/checker.php(48): GGAPI->sendNotification('Nowe powiadomie...', '/index.php?user...', true, 1350312915)
      #3 {main} exception 'GGAPIForbiddenException' with message 'You have exceeded limit for accessing API' in ****/GGAPI.php:485

      Komentarz


        #4
        Możesz złapać wyjątek i wywołać $gg->getRawResponse() (pełna ostatnia odpowiedź z api) - będzie też tam pole "errorData" które dokładnie mówi o który limit chodzi.
        https://github.com/GGNetwork/GGAPI/b...GGAPI.php#L558

        Sprawdziliśmy aplikację twarzoksięga - w nocy cron wysyła pomyślnie notyfikacje (bo dzienny limit się odblokowuje) a ponieważ kumulujesz niewysłane notyfikacje, to one od razu wyczerpują limit 100 na dzien dla danego użytkownika. Trzeba rozważyć, czy niektórych notyfikacji nie pomijać gdy limit się wyczerpuje na danym użytkowniku lub w ciągu dnia bardziej kumulować poszczególne notyfikacje, żeby nie przekroczyć 100 na dzień dla danego użytkownika.
        Można też notyfikować tylko o ważnych rzeczach (wg jakiegoś kryterium).
        Ostatnio edytowany przez botmonster; [ARG:4 UNDEFINED].
        sigpic 5GB
        http://www.gg.pl/info/pobierz/

        Komentarz

        Pracuję...
        X