2016-06-01 41 views
1

對於使用桌面應用程序的人員,他們如何處理需要重定向url的第三方服務的oauth2流?oauth2重定向url如何爲桌面應用程序工作?

我想通過Discord的oauth2登錄認證用戶。但我正在開發一個桌面應用程序,並且沒有任何webservice。

我讀過有關,看起來像重定向方案,

urn:ietf:wg:oauth:2.0:oob

但不和諧的說,這是通過的oauth2登錄後非匹配重定向URL。

+0

我認爲你需要爲oauth2登錄開發一個服務器端應用程序。實際上,Oauth2是爲使用指定URL訪問的基於互聯網的應用程序製作的。桌面應用程序無法正常工作,因此無法集成Oauth2。 – Linh

回答

2

如果您使用的桌面應用程序,你有兩個選擇:

  1. 您可以在本地啓動Web服務器,並使用localhost爲redirectUri。缺點是您通常還需要在允許的重定向Uris列表中提供端口號,並且您不必知道客戶端是否有某個端口可用。
  2. urn:ietf:wg:oauth:2.0:oob指示服務器根本不重定向用戶,而是輸出瀏覽器窗口標題中的代碼。如果您有適當的權限來閱讀其他Windows標題,那麼您可以在那裏自動檢測更改。此外,代碼通常會顯示給用戶,因此作爲後備他可以複製&將代碼粘貼到您的應用程序中。但是,您的服務可能不支持這一點。
  3. 設置一個web服務,爲您轉發令牌。基本上,您設置了一個web服務,您的應用程序通過該服務進行身份驗證,並且webservice將身份驗證服務的URL返回給您,其中包括向您向其發送用戶的適當的state。然後,身份驗證服務會將您的用戶發送回您的web服務,該服務再次將代碼報告給您的應用程序,例如通過長輪詢,網絡套接字或在整個過程中保持打開的真正的TCP連接。請注意,Web服務將需要謹慎的設計,以便該服務不會被第三方濫用。由於您無法通過Web服務在技術上驗證您的桌面應用程序,因此無法阻止其他應用程序調用您的Web服務,但您可以在同意屏幕上向用戶提供一些信息,以幫助用戶確定請求是否合法。
+0

因此,如果我想重定向到iOS/OS X應用程序(如myapp:// oauth/callback),我需要webservice作爲重定向到此URI的代理? –

相關問題