2013-10-23 122 views
12

我現在工作的任務是設置Google授權以訪問我的組織的資源。Google雲端控制檯:無效的重定向URI

但是這個任務有問題。我的組織爲其本地網絡使用非標準域:domain.off。當我嘗試在Google雲端控制檯(https://cloud.google.com/console)中將'http://dev.domain.off:12345/auth/google/callback.html'設置爲oauth2回調時,我收到'無效的重定向URI'錯誤。

因爲在我的組織的私人發展領域許多其他服務我必須使用不同的地址衝突,我不能正確的互聯網域名使用直接地址。

我不能使用生產環境具有直接地址發展的目的。開發環境只有私人地址domain.off。

我不能修改孔開發環境改變所有私人開發地址公開。這不是我的強項。

有沒有解決我的問題? 我現在看到的唯一解決方案是要求Google開發人員刪除或修改oauth回調設置表單中的URI驗證器,以接受非標準域。

+0

我對谷歌雲一無所知。只是想法。也許你可以使用有效的url,然後使用帶有proxypass和proxypassreverse等代理指令的apache來處理請求。 –

+0

這是你的任何幫助2:https://groups.google.com/forum/#!topic/google-plus-developers/6j6JNmewCXI –

回答

1

,因爲你不能使用正確的互聯網域名直接地址

你可以嘗試這樣的事情

您可以創建一個主子域讓所有谷歌權威性響應和重定向到正確使用「狀態」子域名查詢參數。

例如創建google.mydomain.com並使用它作爲您的有效「重定向URI」和Apache將重定向URL以便與重定向每個用戶(或重寫)功能。關於Apache

更多信息重定向在 http://www.simonecarletti.com/blog/2009/01/apache-query-string-redirects/

下面的代碼:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^google\. 
RewriteCond %{QUERY_STRING} state=([a-z0-9]+) 
RewriteRule ^(.*)$ http://%1.mydomain.com/$1 [L] 
1

有沒有可能是你做的同意,並重定向到一個公共領域的地方,你控制(使用ACCESS_TYPE =離線) ?

當Google發回授權碼時,請不要在公有域中使用它,請使用http webhook或其他東西將它傳遞給您的受限制的私有域,然後從私有域進行交換。然後這可以讓你使用不同的域名和回調網址。請注意,使用sdk腳本設置的redirect_url也必須與您在控制檯上設置的相同,而與您實際調用交換機的服務器無關,並完成令牌獲取。

我不知道如果我失去了你的任何約束,但也許這會有所幫助。

3

你可能想要的是用另類的Oauth工作流程之一。

如果您只想從您的服務中使用谷歌雲,請按照此處所述去尋找服務帳戶:https://developers.google.com/console/help/new/#generatingoauth2我在teowaki.com上與Google bigquery進行交互,並且可以無縫工作。您只需在雲端控制檯上生成密鑰並將密鑰放置在服務器上即可。

如果需要識別用戶,那麼你可以去爲OAuth進行安裝的應用程序如下https://developers.google.com/console/help/new/#generatingoauth2

在這種情況下所示,您可以選擇beetween用戶去一個URL中,他們會贈送令牌,他們需要將其粘貼迴應用程序,或被重定向到localhost中的URL。因爲我假設你正在做一個web應用程序,你應該選擇第一個選項並向用戶提供他們需要粘貼的令牌。這可能不是有史以來最好的UX,但作爲一個內部應用程序,它可能是可行的。

+0

我給你獎金,因爲你給了唯一的選項,不需要公有領域這顯然是這個問題的主要問題。不幸的是,它並沒有真正幫助我用粉末開發工作流程,因爲我不想在開發和生產過程中採用不同的行爲,但我確信您已經回答了僅使用LAN的生產服務器的問題。 – systho

+0

謝謝:)你對開發/生產有不同的行爲是正確的。我認爲這將是一個Intranet應用,因此這就是爲什麼我給你提供該解決方案 –

+0

你是對的,我只是增加了一個便條貼有粉同樣的問題,但說明是結合到現在已經消失了賞金消息 – systho