2016-11-15 14 views
5

Postępuję zgodnie z instrukcjami podanymi pod adresem: https://developers.google.com/drive/ios/quickstart?ver=swift.Jak naprawić "403 - disallowed_useragent" na natywnym SDK do iOS Google Drive iOS?

Wczoraj to działało, ale dziś rano wydaje się zawsze zawodzić. Dziwne jest to, że używam ich natywnego SDK. Nie wiem, dlaczego uważa, że ​​używam widoku internetowego. Dokładny błąd to:

Ten klient użytkownika nie może wysyłać do Google prośby o autoryzację OAuth, ponieważ jest sklasyfikowany jako wbudowany klient użytkownika (znany również jako widok internetowy). Zgodnie z naszymi zasadami, tylko przeglądarka może wysyłać prośby o autoryzację do Google. Oferujemy kilka bibliotek i przykładów dla rodzimych aplikacji, aby wykonać żądanie autoryzacji w przeglądarce.

Sklonowałem: https://github.com/googledrive/ios-quickeditor i otrzymałem ten sam błąd.

+0

proszę sprawdzić http://stackoverflow.com/questions/40654403/403-error-disallowed-useragent/42045386#42045386 –

Odpowiedz

1

EDYCJA: Poniższy komentarz nadal obowiązuje. Wróciłem do rzeczy już w Swift i tutaj jest the result and what I did (on Github). Mam nadzieję, że zaoszczędzą one komuś innemu warta pracy, aby to zrozumieć.


Oto odpowiedź niefortunne: Tak, używasz przykład z Google iOS Quickstart, „native SDK”, jak to nazwać. To jednak nieaktualne, ponieważ używa dokładnie tego widoku internetowego, którego Google nie chce już używać.

Jeśli to działało wcześniej, ale nagle przestało to robić (tak jak ja sam się przeżyłem), może to wiązać się z koniecznością zmiany czegoś związanego z identyfikatorem klienta. W przypadku identyfikatorów klientów, które istnieją od pewnego czasu, wydaje się, że upłynie dłuższy okres karencji, dopóki Google nie zablokuje dostępu do widoku w przeglądarce internetowej (na razie nadal powinno to być jakieś ostrzeżenie). Nowy identyfikator klienta, który utworzyłem niedawno z przyczyn niezwiązanych z żadną inną przyczyną, prawdopodobnie spowodował, że utknąłem w konieczności zastąpienia kodu uwierzytelniającego Dysk Google w nowej wersji w krótkim czasie.

Co do opcji (do tej pory tylko drugi respondent na liście pytań z posta na blogu Google), po pewnym badaniu GTMAppAuth wydaje się być najbardziej realną opcją dla mnie, ponieważ nie jestem zainteresowany kompletnym logowanie i logowanie użytkownika. Ale mogę się mylić.

GTMAppAuth ma przykładowy kod dla systemu iOS, ale tylko w Objective-C. Muszę jeszcze przez to przejść. Ogólnie logika kodu zmieni się w następujący sposób: Twoje obecne rozwiązanie uwierzytelnia wyłącznie w Twojej aplikacji. Jest asynchroniczny, ale nie opuszcza Twojej aplikacji. Nowe rozwiązanie wymaga inicjowania uwierzytelniania w aplikacji podczas przygotowywania i zapamiętywania funkcji zwrotnej. Inicjacja uwierzytelniania otwiera następnie przeglądarkę na zewnątrz, która po wykonaniu powoduje wywołanie zwrotne URL w delegacji aplikacji. W delegacie aplikacji, następnie sprawdź, czy przygotowane callback i, w zależności od statusu wyniku zewnętrznego połączenia, powiadom użytkownika o sukcesie lub niepowodzeniu zewnętrznego uwierzytelniania.

-2

Możesz rozwiązać ten problem, korzystając z zewnętrznego zestawu SDK CloudRail, który działa dobrze na Dysku Google i nowych ograniczeń uwierzytelniania. This tutorial dokładnie pokazuje, jak korzystać z przeglądarki zewnętrznej, a nie z przeglądarki internetowej.

2

spróbować, będzie to działa na "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, jak Gecko) Chrome/Safari/537,36 41.0.2228.0"

Google ograniczyć uwierzytelniania z WebViews. to akceptuje useragent użytkownika useragent .verride z zestawu Safari z powyższym łańcuchem użytkownika, który będzie działał.

+0

to DID rozwiązać problem dla mojej aplikacji internetowej, jednak to rozwiązanie ma pewne wady. Po pierwsze, Google może wysłać do użytkownika ostrzeżenie, że wykrył logowanie w nowym urządzeniu WINDOWS, które brzmi jak wyłudzanie informacji. Innym problemem jest to, że może to zniekształcić twoją Analitykę z powodu nowego stałego klienta użytkownika. –

Powiązane problemy