1

我正在開發一個開源的Node模塊,需要訪問每個用戶的私有Google雲端硬盤文件。我一直試圖圍繞所有這些不同的身份驗證類型進行打包,並且走到了路障。從我收集的,有兩種主要類型的認證在沒有OAuth2重定向/複製和粘貼的情況下訪問私有Google雲端硬盤數據

  1. 我,圖書館作者,提供我的圖書館需要用的OAuth2每個用戶進行身份驗證的公鑰和私鑰。這意味着給他們一個URL來讓我的應用訪問他們的數據,並讓他們將訪問碼複製並粘貼回他們的終端。我能夠運行this教程並使其運行,但由於必須使用我的庫進行打包,並且不必要的困難,所以此方法看起來很危險。

  2. 讓用戶轉到Google API控制檯,獲取他們自己的API密鑰,並通過某種配置文件將其提供給我的庫。沒有URL重定向,沒有複製和粘貼,只有他們有權訪問的一些私人憑證。

2聽起來好多對我說:這個圖書館有絕對無關,與我,一旦它在用戶的手中,所以感覺不正確,讓他們與我進行身份驗證。但是從我所能找到的方面來看,使用Google API執行此操作的唯一方法是創建一個Google服務帳戶,下載它們提供給您的JSON,通過類似於this博客文章的頂級評論的流程,然後手動給出服務帳戶電子郵件訪問我的個人Google雲端硬盤文件。這看起來很詭異,而且還有很多工作要獲得我自己的私人數據。有沒有更好的方法來解決這個問題?我覺得這很奇怪,在其他API中這種相當標準的流程只能通過服務帳戶在Google的API中使用,但也許有一種方法,我只是沒有看到它。我對身份驗證相當陌生,因此,任何幫助都是值得讚賞的。謝謝!

回答

1

首先,我想說的是,您無法發佈您的開放源代碼項目,其中包含您在Google Developers控制檯上創建的客戶端ID和客戶端隱私,這與googles terms of service相反。

1.您將使用開發人員憑據(如密碼,密鑰和客戶端ID)並標識您的API客戶端。您將保留 您的憑據保密,並做出合理的努力來阻止 並阻止其他API客戶端使用您的憑證。 開發人員憑證可能未嵌入到開源項目中。

我對另一個關於公開客戶端ID在open source projects問題的答案。

其次,您可以指示您的用戶使用Oauth2或服務帳戶,或者兩者都取決於您。

如果用戶只能訪問他們自己的數據,並且不需要訪問其他人的數據,那麼他們可以使用服務帳戶來指示他們如何使用服務帳戶在Google雲端硬盤上共享文件夾。然而,從你身邊的權限可能會很棘手,當他們上傳的服務帳戶將自己的文件上傳到用戶的谷歌驅動器帳戶,你將需要有服務帳戶添加權限的用戶,因此用戶將也能夠訪問說文件。

最簡單的方法是Oauth2,當代碼上傳文件時,它們由經過身份驗證的用戶擁有,因此您不會對服務帳戶擁有相同的權限問題。

+0

我該如何去讓每個用戶使用OAuth2?我認爲OAuth2會成爲我給他們一個Url的地方,並且該網址說「給Weston許可做x,y和z」。但是,如果這不是我在URL中給出的憑證,那有什麼意義?有沒有辦法使用OAuth2進行身份驗證,而無需複製和粘貼網址? – Weston

+0

當他們下載您的項目時,他們將不得不獲得一個配置文件或一些地方,他們可以從Google Developer控制檯添加他們自己的憑據。 – DaImTo

+0

所以它會是相同的流程(給他們一個URL,他們複製並粘貼回控制檯),但OAuth屏幕只會說「給我[自己]許可做x,y和z」?似乎很奇怪必須這樣做,我想有一種方法可以通過編程來完成所有這些,就像在服務帳戶流程中一樣。 – Weston

相關問題