使用OAuth 2.0訪問谷歌的API
使用OAuth 2.0訪問谷歌的API
谷歌的API使用的OAuth 2.0協議進行身份驗證和授權。谷歌支持常見的OAuth 2.0場景,如那些Web服務器,安裝,和客戶端應用程序。
首先,獲得來自OAuth 2.0用戶端憑證谷歌API控制臺。那么你的客戶端應用程序請求從谷歌授權服務器的訪問令牌,提取令牌從響應,并發送令牌到谷歌的API,您要訪問。對于使用OAuth 2.0與谷歌的互動演示(包括利用自己的客戶端證書的選項),實驗用的OAuth 2.0游樂場。
該頁面提供的OAuth 2.0用戶授權方案的概述,谷歌的支持,并提供鏈接到更詳細的內容。有關使用OAuth 2.0認證的詳細信息,請參閱ID連接。
注:?由于得到執行正確的安全隱患,我們強烈建議您與谷歌的OAuth 2.0端點交互時使用OAuth 2.0庫。它是利用他人提供的精心調試代碼的最佳實踐,這將有助于保護您和您的用戶。欲了解更多信息,請參閱客戶端庫。
基本步驟
訪問使用OAuth 2.0谷歌的API時,所有的應用程序都遵循一個基本模式。在高層次上,你遵循四個步驟:
1.獲取的OAuth從谷歌API控制臺2.0憑據。
訪問?谷歌API控制臺?獲取的OAuth 2.0憑據如已知的谷歌和你的應用程序客戶端ID和客戶端密鑰。設定值的變化基于你正在建設什么類型的應用程序。例如,javaScript應用程序并不需要一個秘密,但在Web服務器應用程序一樣。
2.從谷歌授權服務器的訪問令牌。
在應用程序能夠使用谷歌API來訪問私人數據,它必須獲得令牌授予訪問該API的訪問。單個接入令牌可以授予不同程度的訪問到多個API。所謂的可變參數scope控制組的資源和操作的,一個訪問令牌許可證。在訪問令牌請求,你的應用程序中發送一個或多個值scope的參數。
有幾種方法,使這個請求,他們基于應用的您正在構建的類型而有所不同。例如,一個javaScript應用程序可能會請求令牌使用的瀏覽器重定向到谷歌的訪問,而一個應用程序,沒有瀏覽器使用Web服務請求的設備上安裝。
一些請求需要在用戶與他們的谷歌帳戶登錄的驗證步驟。登錄后,用戶被詢問他們是否愿意承認你的應用程序請求的權限。這個過程被稱為用戶的同意。
如果用戶授予許可,谷歌授權服務器發送您的應用程序的訪問令牌(或授權代碼,你的應用程序可以使用,以獲得訪問令牌)。如果用戶不授予權限,服務器返回一個錯誤。
它一般是要求最佳實踐作用域遞增,在當時的訪問是必需的,而不是前面。例如,在用戶按下“購買”按鈕要支持購買一個應用程序不應該要求谷歌錢包訪問;?看到增量授權。
3.發送令牌的API訪問。
后的應用程序獲得的訪問令牌時,它發送所述令牌的谷歌API在HTTP授權頭。它可以發送標記為URI查詢字符串參數,但我們不建議這樣做,因為URI參數可以在沒有完全安全的日志文件結束。此外,它是很好的休息的做法,以避免造成不必要的URI參數的名稱。
訪問令牌僅適用于所描述的一組操作和資源的scope令牌請求。例如,如果一個訪問令牌發布了Google+的API,它不授予訪問谷歌聯系人API。你可以,但是,發送訪問令牌的Google+ API多次進行類似的操作。
4.刷新訪問令牌,如果需要的話。
訪問令牌壽命有限。如果應用程序需要訪問超出了單個訪問令牌的使用壽命谷歌的API,它能夠獲得刷新令牌。刷新令牌可以讓你的應用程序,以獲得新的訪問令牌。
注:?在安全的長期存儲保存刷新令牌,并繼續只要他們保持有效使用它們。限制適用于每個客戶端用戶發出的組合刷新令牌的數量,以及每個用戶在所有的客戶,而這些限制是不同的。如果您的應用程序請求足以刷新令牌走過去的限制之一,老年刷新令牌停止工作。
方案
Web服務器應用程序
該谷歌的OAuth 2.0端點支持的Web服務器應用程序使用的語言和框架,如PHP,Java和Python和Ruby,和ASP.NET。
當你的應用程序重定向瀏覽器的谷歌URL授權序列開始;?該URL包括查詢參數指示所請求的訪問類型。谷歌處理用戶身份驗證,會話選擇和用戶同意。其結果是一個授權碼,其應用可以換取的訪問令牌和刷新令牌。
應用程序應該保存令牌以供將來使用刷新和使用令牌來訪問谷歌的API訪問。一旦訪問令牌過期后,應用程序使用令牌來獲得一個新的刷新。
有關詳細信息,請參閱使用OAuth 2.0 Web服務器應用程序。
安裝的應用程序
上安裝的設備,諸如計算機,移動設備,和片劑谷歌的OAuth 2.0端點支持的應用程序。當您創建通過客戶端ID?谷歌API控制臺,指定這是已安裝的應用程序,然后選擇的Android,Chrome瀏覽器,iOS或“其他”作為應用程序類型。
該方法得到了客戶端ID,并在某些情況下,客戶端機密,你在你的應用程序的源代碼中嵌入。(在這種情況下,客戶端機密顯然不是當作一個秘密。)
當你的應用程序重定向瀏覽器的谷歌URL授權序列開始;?該URL包括查詢參數指示所請求的訪問類型。谷歌處理用戶身份驗證,會話選擇和用戶同意。其結果是一個授權碼,其應用可以換取的訪問令牌和刷新令牌。
應用程序應該保存令牌以供將來使用刷新和使用令牌來訪問谷歌的API訪問。一旦訪問令牌過期后,應用程序使用令牌來獲得一個新的刷新。
有關詳細信息,請參閱使用OAuth 2.0安裝的應用程序。
客戶端(JavaScript)的應用
該谷歌的OAuth 2.0端點支持,在瀏覽器中運行的JavaScript應用程序。
當你的應用程序重定向瀏覽器的谷歌URL授權序列開始;?該URL包括查詢參數指示所請求的訪問類型。谷歌處理用戶身份驗證,會話選擇和用戶同意。
其結果是的訪問令牌,客戶機應該包括它在谷歌API請求之前驗證。當令牌過期后,應用重復該過程。
有關詳細信息,請參閱使用OAuth 2.0客戶端應用程序。
上限量輸入設備的應用程序
即如游戲機,攝像機和打印機上有限的輸入設備運行谷歌的OAuth 2.0端點支持的應用程序。
授權序列以使Web服務請求,谷歌URL授權碼的應用程序。該響應包含幾個參數,包括URL和該應用程序顯示給用戶的代碼。
用戶獲得來自設備的URL和代碼,然后切換到一個單獨的設備或計算機具有更豐富的輸入能力。用戶啟動瀏覽器,導航到指定的URL,在日志,并進入碼。
同時,應用調查谷歌的網址在指定的時間間隔。用戶批準的訪問后,從谷歌服務器的響應中包含的訪問令牌和刷新令牌。應用程序應該保存令牌以供將來使用刷新和使用令牌來訪問谷歌的API訪問。一旦訪問令牌過期后,應用程序使用令牌來獲得一個新的刷新。
有關詳細信息,請參閱使用OAuth 2.0設備。
服務帳戶
谷歌的API,如預測API和谷歌云存儲可以代表你的應用程序的行為,而無需訪問用戶信息。在這種情況下,你的應用程序需要證明自己的身份的API,但沒有用戶許可是必要的。同樣,在企業的情況下,你的應用程序可以請求一些資源委派訪問。
對于這些類型的服務器到服務器交互,你需要一個服務帳戶,這是屬于你的應用程序,而不是對個人最終用戶的賬戶。您的應用程序調用代表服務帳戶的谷歌的API,并且不需要經過用戶同意。(在非服務帳戶的情況,您的應用程序調用的API谷歌代表最終用戶的,有時也需要用戶的同意。)
注意:這些服務帳戶的情況需要應用程序創建和加密簽名JSON網絡令牌(JWTs)。我們強烈建議您使用庫來執行這些任務。如果您不使用抽象令牌創建和簽名庫寫這樣的代碼,你可能會作出這樣會對您的應用程序的安全造成嚴重影響的錯誤。對于支持此方案庫的列表,請參閱?服務帳戶的文檔。
服務帳戶的憑據,您從谷歌API控制臺獲取,包括生成的電子郵件地址,它是獨一無二的,客戶端ID,以及至少一個公鑰/私鑰對。您可以使用客戶端ID和一個私鑰來創建簽名JWT,構建以適當的格式的訪問令牌請求。然后,應用程序將令牌發送請求到谷歌的OAuth 2.0授權服務器,它返回的訪問令牌。該應用程序使用令牌來訪問谷歌的API。當令牌過期后,應用重復該過程。
有關詳細信息,請參閱服務帳戶的文檔。
注:雖然您可以使用服務帳戶的應用程序,從A G套房域中運行,服務帳戶不是你的Google+帳戶套房的成員并沒有受到由G套房管理員設置的域策略。例如,在G套房管理控制臺設定政策來限制摹套房最終用戶的共享文件的域之外并不適用于服務帳戶的能力。
令牌大小
令牌的尺寸可以變化,可達以下限制:
授權碼:256個字節
訪問令牌:2048個字節
刷新令牌:512個字節
谷歌保留這些限制范圍內調整令牌大小的權利,你的應用程序必須相應地支持可變令牌大小。
令牌過期
您必須編寫代碼來預測這種可能性,即授予刷新令牌可能不再工作。刷新令牌可能會停止對這些原因的工作:
用戶已撤銷你的應用程序的訪問。
刷新令牌沒有被使用六個月。
用戶更改密碼,并刷新令牌包含Gmail的作用域。
用戶帳戶已超過批準(現場)刷新令牌的最大數量。
目前的每個客戶每個用戶帳戶50個刷新令牌限制。如果達到了極限,自動創建令牌的新的刷新無效毫無預兆令牌最古老的刷新。此限制并不適用于服務帳戶。
還有一個更大限度上刷新的總數令牌的用戶帳戶或服務帳戶可以在所有的客戶都有。大多數普通用戶都不會超過這個限制,但開發者的測試帳戶可能。
如果您需要授權多個程序,機器或設備,一個解決方法是限制客戶端,你每個用戶帳戶的授權,以15或20。如果你是一個數量?摹套房管理員,您可以創建其他管理員用戶和使用它們授權部分客戶端。
客戶端庫
下面的客戶端庫與流行的框架,這使得實施的OAuth 2.0簡單整合。更多的功能將隨著時間的推移被添加到庫中。
谷歌API客戶端庫的Java
谷歌API客戶端庫的Python
谷歌API客戶端庫圍棋
谷歌API客戶端庫的.NET
谷歌API客戶端庫的Ruby
谷歌API客戶端庫PHP
谷歌API客戶端JavaScript庫
GTMAppAuth - OAuth客戶端庫為Mac和iOS
API web前端
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。