2014-01-22 18 views
1

我注意到,在幾個源代碼中,應用程序使用默認的client_id和默認的client_secret。 當我連接到我的Bigquery項目(當我在Web瀏覽器中提示時授權訪問之後),他們會工作,但我不允許任何API訪問此client_id(可能,我可以通過接受某些東西,但我不知道什麼......)。我在雲控制檯的任何位置都找不到此client_id。Bigquery「default」client_id在幾個工具中,誰或它是指什麼?

下面還有的使用該CLIENT_ID(和client_secret),它可以在這裏找到源代碼的一部分:

https://code.google.com/p/google-bigquery-tools/source/browse/bq/bq.py?r=37103f240562cbe90bbd8df9bd313dcd87b7a106

_CLIENT_INFO = { 
'client_id': '977385342095.apps.googleusercontent.com', 
'client_secret': 'wbER7576mc_1YOII0dGk7jEE', 
'scope': _CLIENT_SCOPE, 
'user_agent': _CLIENT_USER_AGENT, 
} 

是否有人知道誰做這個CLIENT_ID指什麼/取悅? 它是由Google提供的一些預定義的client_id嗎? 而且這個client_secret是一個永遠不會改變的固定值嗎?

回答

2

當您獲得OAuth2令牌(對於某些類型的OAuth)時,您需要三件事:客戶端ID,客戶端密鑰和範圍。客戶端ID的第一部分是Google開發者控制檯項目ID。當您將OAuth2令牌發送到後端服務時,如果後端服務已被範圍授權,它將能夠破解OAuth2令牌並提取項目ID。

在許多Google API中,這是您如何指定項目 - 隱式地在OAuth2令牌中。但是,在BigQuery中,我們希望人們能夠使用多個項目而無需重新進行身份驗證。項目ID始終是API請求的一部分(它在所有REST API請求使用的URL中指定)。 BigQuery完全不使用衍生自OAuth2令牌的項目ID。

但仍然需要客戶端ID和客戶端密鑰。這就是爲什麼bigquery將它們嵌入到客戶端工具(bq.py和web ui)中的原因。他們並不是真正的祕密,因爲他們只是用來看一個特定客戶的流行程度。另一種選擇是bq的每個用戶必須生成他們自己的客戶端密鑰/客戶端ID,這會使其更難以使用。

如果您正在編寫與BigQuery進行通信的代碼,我們寧願使用您自己的客戶端ID和客戶端密鑰。它們非常容易生成,並且在發生問題時幫助識別您的工具。

這是一個不幸的來源,在未來,我們可能會採取措施解決它,比如默認在請求中使用的項目ID是來自客戶端ID的項目ID,但目前我們沒有計劃這樣做。

相關問題