2017-05-14 138 views
16

我需要幫助。我沒有找到我的問題的答案。我嘗試了谷歌搜索,我試圖在其他方面問,但我從來沒有找到答案。Google API:不是客戶的有效來源:url尚未被白名單列入客戶ID「ID」

我正在使用谷歌API(Youtube數據API),我使用谷歌代碼示例代碼它的工作原理我很確定。當我嘗試啓動腳本時出現錯誤:

details: "Not a valid origin for the client: "MyURL" has not been whitelisted for client ID "MyID". Please go to https://console.developers.google.com/ and whitelist this origin for your project's client ID."

error: "idpiframe_initialization_failed"

我將我的網站列入白名單並接受它的問題。我不知道什麼是錯的。我應該怎麼做「白名單」我的域名(它已被列入白名單)

還有另外一個問題。我以前沒有在這個問題上尋找答案。

我認爲我可以使用Localhost上的代碼,我想我必須將我的localhost地址列入白名單或類似的東西。但是,白名單不起作用。

  • DreamGamer
+0

仍然面臨同樣的問題。有任何其他解決方案來解決這個問題嗎? –

回答

10

有同樣的問題,這裏是我如何解決它:

  1. 激活您的項目都Analytics(分析)和谷歌加的API
  2. 創建新的OAuth 2.0客戶端憑證
    • 添加授權的Javascript起源限制部分
  3. 使用新的客戶端ID。

享受。

+0

OMG非常感謝你!它爲我工作。我的問題之一是我使用客戶端密鑰而不是客戶端ID。 – DreamGamer

+0

我應該澄清,如果您已經爲其他端口創建了oAuth;出於某種原因,您不能重新編輯端口以使用不同的端口。我基本上爲新港口「創造了另一個憑證」。 很明顯,這將創建另一個令牌;所以只需抓住它並使用它。您可以在控制檯中保留這兩個令牌。 – Sam3k

+0

謝謝!這是違反直覺的,但這是正確的答案。非常瘋狂,你不能只將你需要的API(這也不是很明顯)添加到你現有的密鑰中。重新創建密鑰的整個配置是一個痛苦。 – beachCode

1

我有這個確切的同樣的問題!我不知道該怎麼做,我已經搜索了答案,似乎沒有任何工作。

「客戶端的有效來源:https://secure.mydomain.com尚未列入客戶端ID MYCLIENTID的白名單,請訪問console.developers.google.com/並將此來源列入您項目的客戶端ID。 錯誤: 「idpiframe_initialization_failed」

當我去console.developers.google.com/apis/credentials/domainverification

我可以在允許的域,請參閱:

secure.mydomain.com/

這可能是一個「/」問題嗎?當然secure.mydomain.com將包括在secure.mydomain.com/

這個錯誤...這很煩人!

+0

我允許這些域:「Subdomain.DreamGamer.de,Subdomain.DreamGamer.de/,www.Subdomain.DreamGamer.de,www.Subdomain.DreamGamer.de/,http://www.Subdomain.DreamGamer.de,http ://www.Subdomain.DreamGamer.de/」。沒有人爲之工作。 idk,如果這是問題。 – DreamGamer

+0

而且?你有沒有找到任何結果? ._。 – DreamGamer

+0

有人知道這個解決方案是什麼? –

-1

我有這個完全相同的問題 - 我的解決方案是進入API管理器並啓用分析API。不知道是什麼問題,但這似乎已經修復它!

+0

我啓用了Analytics API,但沒有任何更改。 :C – DreamGamer

0

我只是犯了同樣的錯誤:嘗試了official quickstart example並收到與您一樣的錯誤信息。

這很令人困惑,因爲該示例是一個使用OAuth進行用戶登錄的完整示例,而不僅僅是API key。如果您不想使用OAuth,並且您只想檢索某些Youtube數據,而無需任何特權操作(例如,如果您只想搜索或列出視頻,頻道或播放列表),則此示例適合您。

解決方法很簡單,只需要提供apiKey而不是clientIdgapi.client.init(鏈接:API docs),像這樣:

const apiKey = '<my API key>'; 

function gooApiInitClient() { 
    // Array of API discovery doc URLs for APIs used by the quickstart 
    const discoveryDocs = ["https://www.googleapis.com/discovery/v1/apis/youtube/v3/rest"]; 

    return gapi.client.init({ 
    apiKey, 
    discoveryDocs 
    }); 
} 

// see: https://developers.google.com/api-client-library/javascript/reference/referencedocs 
gapi.load('client', { 
    callback: function() { 
    // we now have gapi.client! initialize it. 
    gooApiInitClient(). 
     then(() => { 
     // we can start using the API here! 
     // e.g. gapi.client.youtube.videos.list(...); 
     }).then(results => { 
     // use results here.... 
     }); 
    } 
}); 
+1

我建議簡化代碼片段以使這個答案更好。初始化調用只有4行,這是唯一改變的。其他的東西不是很有幫助。 – Charlie

+0

好主意......當我發佈前一段時間,我很忙,只是在那裏拍了一遍 – Domi

30

我清除緩存。然後開始工作。

在Chrome中:設置 - >高級 - >清除瀏覽數據 - >緩存圖像和文件

+0

這也適用於我,使用Google Drive API :) –

+0

謝謝,我做的一切都正確,我遇到了麻煩。 – cura

+0

這對我而言適用於我的網絡應用程序的Google登錄。謝謝! –

1

嘗試清除緩存也可能是問題與緩存/ localStorage的。

0

我認爲這與緩存有關,嘗試轉到瀏覽器並清除緩存,嘗試:在Chrome中>設置>高級>清除瀏覽數據:>:緩存的圖像和文件。