2016-11-15 108 views
5

我遵循的指示在:https://developers.google.com/drive/ios/quickstart?ver=swift如何使用本機Google Drive iOS SDK修復「403 - disallowed_useragent」?

昨天它正在工作,但今天早上似乎總是失敗。奇怪的部分是我正在使用他們的原生SDK。我不知道它爲什麼相信我在使用網絡視圖。確切的錯誤是:

此用戶代理不允許向Google發出OAuth授權請求,因爲它被歸類爲嵌入式用戶代理(也稱爲網絡視圖)。根據我們的政策,只有瀏覽器可以向Google發送授權請求。我們爲本地應用程序提供多個庫和樣本,以在瀏覽器中執行授權請求。

我克隆:https://github.com/googledrive/ios-quickeditor並得到了同樣的錯誤。

+0

請檢查http://stackoverflow.com/questions/40654403/403-error-disallowed-useragent/42045386#42045386 –

回答

1

編輯:下面的評論仍然適用。到目前爲止,我已經在Swift中再次運行了,現在是the result and what I did (on Github)。我希望它可以幫助人們節省一天的工作量。


這裏是不幸的回答:是的,您使用的是從谷歌的iOS Quickstart,「本土SDK」你叫它例子。但是,這已經過時了,因爲它完全使用了Google不希望您再使用的嵌入式Web視圖。

如果它確實有效,但突然之間(如我經歷過的那樣)停止了這樣做,它可能與您更改與客戶端ID相關的內容有關。對於一段時間內存在的客戶端ID,似乎有更長的寬限期,直到谷歌硬阻止網絡視圖的使用(現在應該仍然只是一些警告,我明白)。我最近爲不相關的原因創建了一個新的客戶端ID,這似乎是造成這種情況的原因,讓我不得不在短時間內替換新版本的Google Drive認證碼。

至於選項(到目前爲止只有其他問題的答覆者從Google博客文章中列出),經過一些研究GTMAppAuth似乎是我最可行的選擇,因爲我對完全不感興趣用戶登錄和退出。但我可能在那裏錯了。

GTMAppAuth有iOS示例代碼,但只是在Objective-C中。我還沒有完成。一般來說,您的代碼邏輯將如此改變:您當前的解決方案純粹在您的應用程序中進行身份驗證。它是異步的,但不會離開你的應用程序。新的解決方案要求您在準備和記住回撥功能的同時在您的應用程序中啓動身份驗證。然後,身份驗證啓動將在外部打開一個瀏覽器,一旦完成,會在您的應用程序委託中導致URL回調。在您的應用程序委託中,然後檢查您準備好的回調,並根據外部通話的結果狀態,通知用戶外部驗證成功或失敗。

-2

您可以通過CloudRail使用適用於Google Drive的第三方SDK和新的身份驗證限制來解決此問題。 This tutorial完全向您展示瞭如何使用外部瀏覽器而不是Web視圖。

2

試試這個,它會爲 「的Mozilla/5.0(Windows NT的6.1)爲AppleWebKit/537.36(KHTML,例如Gecko)Chrome瀏覽器/ Safari瀏覽器41.0.2228.0/537.36」

谷歌作品限制從網頁視圖認證。它接受safari webkit useragent .override useragent與上面的useragent字符串它會起作用。

+0

這個DID解決了我的webapp的問題,但是這個解決方案有一些缺點。首先,Google可能會向用戶發送警報,告知用戶它已經在新的WINDOWS設備中檢測到登錄信息,這聽起來像網絡釣魚。其他問題是,由於新的固定用戶代理,它可能會歪曲您的Google Analytics。 –