2013-01-22 42 views
11

我開發一個應用程序,用戶有自己的網址,以及他們需要使用谷歌API - 當然不同的重定向URI的,像如何處理任意數量的重定向URI?

  • www.example.com/johndoe/google/login
  • www.example.com/foobar/google/login

所以首先我想我可以簡單地通過使用通配符(www.example.com/*/google/login)解決了這個問題,但遺憾的是它沒有按那樣工作。然後我開始在Perl中編寫一個簡單的代理,但我不確定它會起作用,而且我們的時間不夠了。處理這種情況的最佳方式是什麼?我想過從註冊處理程序向控制檯添加一個新的重定向URI,但我沒有發現任何方式的服務器可以做到這一點。

+0

查看 http://stackoverflow.com/questions/7722062/google-oauth2-redirect-uri-with-several-parameters 謝謝回答! – Kiran

回答

14

Google OAuth2重定向URI不支持通配符。我認爲你最好的辦法是使用單個重定向URI,並在state參數中傳入用戶信息。狀態參數作爲迴應返回給您。然後,當您收到授權代碼/令牌時,您可以查找狀態參數並正確處理響應(例如,重定向到用戶特定的URL)。

This answer有更多信息。

+1

嗯,我該如何處理回覆?似乎不是那裏的「狀態」參數。或者我可以在收到代碼後使用任何重定向URI嗎?如何調用實際的API?如果我有訪問令牌,我可以在任何地方使用它,或者有什麼限制? – r1pp3rj4ck

+2

準備請求時傳入狀態參數。例如,您可以在其中包含用戶名。收到授權碼後,將其交換爲訪問/刷新標記,您將擁有有效的訪問令牌以及填充了用戶名的狀態參數。該如何處理取決於您的應用程序。訪問令牌的一個主要限制是它的壽命短(您可以在響應中檢查expires_in參數,我認爲它是3600秒)。因此,您需要定期交換您的長期刷新令牌作爲訪問令牌。 – vlatko

+0

謝謝!事實上,在你迴應我的評論之前,我解決了所有問題,但它仍然清除了一些問題。 – r1pp3rj4ck