我試圖通過JavaScript的谷歌雲端硬盤API運行一個腳本了我的谷歌雲端硬盤。這工作正常,但只有當我在打開的彈出窗口登錄到我的帳戶。我希望每次都登錄到同一個帳戶,所以想知道是否有任何方法可以自動登錄,以避免用戶輸入登錄信息。如何登錄到谷歌的具體雲端硬盤帳戶通過JavaScript谷歌雲端硬盤API
回答
總之,你必須登錄至少一次,谷歌身份提供JSON網絡令牌到期後每次。我不確定Goolge Drive API會持續多久,但通常這些標記可能適用於從單個請求到天的任何地方。
下面是谷歌API的OAuth2 https://developers.google.com/identity/protocols/OAuth2
文檔
- 刷新訪問令牌,如果必要的話。
訪問令牌的生命週期有限。如果您的應用程序在單個訪問令牌的生命週期之外需要訪問 以訪問Google API,則它可以通過 獲取刷新令牌。刷新令牌允許您的應用程序以 獲取新的訪問令牌。
注:保存在安全的長期存儲刷新令牌,繼續 只要他們仍然有效地使用它們。限制適用於每個客戶端用戶發出的組合,每 用戶在所有的客戶 刷新令牌的數量,而這些限制是不同的。如果您的 應用程序請求足夠的刷新令牌以超過 限制之一,則舊的刷新令牌停止工作。
Google提供了一個快速入門指南,用於通過Google Apis實現用戶簽名。 Google使用您必須在Google中註冊爲客戶端應用程序的OAuth2協議。一旦註冊爲客戶端應用程序,您將獲得一個客戶端ID,您通常會以某種形式的應用程序初始化向您的應用程序提供該ID。
這裏是他們的快速入門指南的鏈接,這將幫助你開始: https://developers.google.com/drive/v3/web/quickstart/js
注意,這是一個不演示如何可能接近持久化JSON網絡令牌一個基本的例子,使用戶不必在每個請求上登錄。我概述了一種管理JavaScript和Angular中的身份驗證的簡單方法,可以讓您朝着正確的方向前進,但方向不完整。
例如,在角:
// Configures the required variables before Running an Instance of the App
angular.module("yourModuleName").config(configureApp);
和
// Executed when the App Instance launches, allowing you to connect to Google APIs when the App starts
angular.module("yourModuleName").run(runApp);
凡configureApp和runApp是處理在AngularJS框架應用程序初始化JS功能。以下示例中的代碼將從其自己的應用的REST API中檢索Google Apps Client ID。這僅僅是在那裏你可以檢索存儲這些憑據的例子,但最有可能不是最安全的例子:
var configureApp = function($http,$window) {
// Setup your CLIENT ID from your own REST API (or any other mechanism you may choose)
var httpPromise = $http.get("http://myApp.myDomain.com/config/googleClient");
// Handle the Response from the above GET Request
httpPromise.then(
// Handle Success
function(response) {
// Store the CLIENT ID in local storage for example
$window.localStorage.setItem("GOOGLE_API_CLIENT_ID", response.data.clientId);
// Setup the App Wide variables for Google API
// Client ID and API key from the Developer Console
var CLIENT_ID = response.data.clientId;
// Array of API discovery doc URLs for APIs used by the quickstart
var DISCOVERY_DOCS = ["https://www.googleapis.com/discovery/v1/apis/drive/v3/rest"];
// Authorization scopes required by the API; multiple scopes can be
// included, separated by spaces.
var SCOPES = 'https://www.googleapis.com/auth/drive.metadata.readonly';
// Do more initialization configuration
};
var runApp = function() {
// Initialize the API
gapi.client.init({
discoveryDocs: DISCOVERY_DOCS,
clientId: CLIENT_ID,
scope: SCOPES
}).then(function() {
// Listen for sign-in state changes.
gapi.auth2.getAuthInstance().isSignedIn.listen(updateSigninStatus);
// Handle the initial sign-in state.
updateSigninStatus(gapi.auth2.getAuthInstance().isSignedIn.get());
authorizeButton.onclick = handleAuthClick;
signoutButton.onclick = handleSignoutClick;
});
}
哪些功能與角度使用將取決於所期望的應用生命週期,你需要在目標一個Angularjs應用程序。這種方法可以應用於其他JS框架,如React和Backbone。
爲了突出文檔中的另一個角度,updateSigninStatus
將是一個很好的地方,可以捕獲Google授權請求返回的JSON Web令牌,此時您可以將此令牌存儲在瀏覽器的window.localStorage中以供重用。
只要Google API需要驗證,您就可以重複使用令牌。代幣通常有一個到期。在令牌到期之前,您將能夠阻止API顯示登錄模式。
這確實意味着您仍然必須使用此方法來管理授權過程背後的邏輯,監控來自Google的任何請求令牌刷新或重新認證的響應。
Auth0是一個很好的身份驗證和授權插件,提供多種語言用於連接Google和許多其他OAuth2身份提供商。 Google Drive API使用他們自己的身份提供商服務,根據您註冊的應用的客戶端ID來確認您的應用用戶的身份。
這裏是我的,需要我使用谷歌身份提供實現授權項目實施授權時發現鏈接: https://jwt.io/ https://auth0.com/ Best practices for authentication and authorization in Angular without breaking RESTful principles? https://thinkster.io/tutorials/angularjs-jwt-auth
- 1. 從谷歌雲端硬盤API(蟒蛇)
- 2. 谷歌雲端硬盤API驗證
- 3. PHP與谷歌雲端硬盤API
- 4. 使用谷歌雲端硬盤API V3
- 5. PHP,谷歌雲端硬盤API - 入門登錄用戶ID
- 6. 谷歌雲端硬盤API與服務帳戶C#
- 7. 谷歌雲端硬盤API,OAuth且服務帳戶
- 8. 谷歌雲端硬盤文件夾ID
- 9. 谷歌雲端硬盤訪問權限
- 10. 谷歌雲端硬盤SDK登錄爲Rails的另一用戶
- 11. 選擇具體領域與谷歌雲端硬盤API V2
- 12. 谷歌雲端硬盤/ Google雲端存儲
- 13. 谷歌雲端硬盤API的Java用戶類
- 14. 谷歌雲端硬盤API - 自定義IDataStore實體框架
- 15. 谷歌雲端硬盤API - 下載超過配額
- 16. PHP谷歌雲端硬盤API集成用戶登錄和列表文件
- 17. 谷歌雲端硬盤API result.getStatus()。isSuccess()總是如此
- 18. 谷歌雲端硬盤API:沒有足夠的權限的iOS
- 19. Java的谷歌雲端硬盤API憑證
- 20. 谷歌雲端硬盤API(PHP)的apiDriveService類缺少
- 21. 谷歌雲端硬盤API V2 Q = sharedWithMe從「我的雲端硬盤」文件夾中
- 22. 創建一個谷歌文檔與谷歌雲端硬盤API和Node.js的
- 23. 上傳谷歌雲端硬盤API改造2
- 24. 節點:谷歌雲端硬盤API使用查詢
- 25. 澄清使用谷歌雲端硬盤API V2
- 26. 努力實現從谷歌雲端硬盤API
- 27. 谷歌雲端硬盤API - 文件父母列表總是零
- 28. 訪問谷歌雲端硬盤API拋出com.google.api.client.auth.oauth2.TokenResponseException:401
- 29. 谷歌雲端硬盤搜索API發送部分結果
- 30. 谷歌雲端硬盤API 400上傳大文件
這個答案有些好東西,但我不認爲它解決了OP的問題 – pinoyyid
@pinoyyid我確保在第一段中回答他的問題,指出用戶每次JSON Web令牌或刷新令牌過期時都必須至少登錄一次。這篇文章的其餘部分解釋了爲什麼以及如何創建一種機制,以減少初次登錄後的模態彈出登錄 – Matt
當然,但我的理解是,用戶訪問他們自己的Google帳戶時,他希望所有用戶訪問一個共同的帳戶。因此他正在尋找一種方法來避免用戶必須知道通用帳戶的用戶名和密碼。這可以通過集中存儲的刷新令牌來實現。 – pinoyyid