我在爲Java Web應用程序使用Google日曆的URL回調時遇到問題。我成功地跟蹤了文檔,並在本地獲得了這個工作,但我現在正試圖在EC2實例上運行該工具。在Web應用程序上使用Google日曆的OAuth 2.0
關於Google的快速入門教程聲稱選擇應用類型爲'other'。這在當地適合我。
但是,當我嘗試在服務器上運行這個服務時,我會在日誌中給出URL,並且URL每次都在不同的端口上與localhost進行回調。由於該應用程序不再運行在本地主機上,回調從未收到。
經過一番閱讀後,我需要在Web服務器上實際運行該憑據時將憑據設置爲「Web應用程序」。這表明我需要定義一個'授權重定向URI',並且需要有正確的端口。
我用的是下面的基礎上,教程重定向到URL來認證用戶:
Credential credential = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
After reading this SO post然後我在代碼中設置的端口,所以我可以進入該憑證的同一個端口到然後進入client_secret.json(我的應用程序目前在8080上運行)
我通過這樣做:
Credential credential = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver.Builder().setPort(8080).build()).authorize("user");
但是,這將引發綁定異常,因爲顯然該端口已被使用。
選擇一個我知道的端口是免費的(我試過9999)確實帶我進入頁面,允許我進行身份驗證,因爲URI與client_secret.json中聲明的URI相匹配。然後,這將引發插座綁定失敗例外:
所致:java.lang.Exception的:套接字綁定失敗:[730048]只有一個 用法每個套接字地址(協議/網絡地址/端口)是 通常允許的。
很多例子我已經在網上看到沒有設置端口,然後允許AuthorizationCodeInstalledApp選擇一個自由港,但如何將這項工作時,我們需要指定的API證書授權重定向的URI?
通常,當某個進程/程序使用某個端口並且另一個進程嘗試使用該端口時會出現該錯誤,從而導致衝突。由於該特定端口已被程序使用,因此其他程序無法使用該端口。所以確保你使用一個免費的端口。對於您有關OAuth的問題,您可以查看此[documentaion](https://developers.google.com/identity/protocols/OAuth2InstalledApp#choosingredirecturi)關於如何使用重定向URI。還要確保您使用的重定向URI必須與您在Google API控制檯中爲應用程序設置的重定向URI相同。 – KENdi