什么是REDIRECT_URI和REFRESH_TOKEN需要在谷歌驱动器API?



我对Google Drive API如何工作以及我应该如何将其用于我的用例有疑问。我有一个REST API(基于NodeJS),它在驱动器中上传文档。实际访问驱动器的唯一用户是运行REST API的用户(机器上的根用户)。据我所知,OAuth2协议允许用户允许第三方应用程序访问其信息。所以我不确定我的案子与它是否兼容。我只有一个用户需要一次性权限才能永远可用。

目前,我已经设法使用的驱动器做认证如下:

const { google } = require('googleapis');
const oauth2Client = new google.auth.OAuth2(
CLIENT_ID,
CLIENT_SECRET,
REDIRECT_URI
);
oauth2Client.setCredentials({ refresh_token: REFRESH_TOKEN });
drive_instance = google.drive({
version: 'v3',
auth: oauth2Client,
});

为此,我通过Google Console注册了Google Drive。这里有以下字段:

{
"web": {
"client_id": "CILENT_ID",
"project_id": "project-id",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_secret": "CLIENT_SECRET"
"redirect_uris": [

]
}
}

现在,看一下文档,他们建议使用他们的Playground。但有效期为一周。

我想去生产与我的REST API,但我不确定什么REDIRECT_URIREFRESH_TOKEN应该在这种情况下。我想要三个实例:

  1. Dev- For development.
  2. Prod-用于生产。
  3. Test-集成测试。

我对OAuth2协议如何工作有基本的了解,但我不确定如何创建这三个实例,基于我的用例。基本上,我想保留一个配置文件,每个模式一个,REST API将使用它(基于CLI选项)。谁能解释一下CLIENT_ID,CLIENT_SECRET,REDIRECT_URI,REFRESH_TOKEN这几个选项的大意?我真的需要"重定向"吗?在每种模式下,即使只有一个用户?

如果您只访问这一个帐户,并且您作为开发人员控制它。那么你应该使用一个服务帐户。

如果您授予服务帐户访问您想要访问的驱动器中的目录的权限,那么它将永远拥有访问权限。

// service account key file from Google Cloud console.
const KEYFILEPATH = 'C:\Youtube\dev\ServiceAccountCred.json';
// Request full drive access.
const SCOPES = ['https://www.googleapis.com/auth/drive'];
// Request full drive scope and profile scope, giving full access to google drive as well as the users basic profile information.
const SCOPES = ['https://www.googleapis.com/auth/drive', 'profile'];
// Create a service account initialize with the service account key file and scope needed
const auth = new google.auth.GoogleAuth({
keyFile: KEYFILEPATH,
scopes: SCOPES
});

代码无耻地从我的教程中撕下来用Node Js上传图片到Google drive

注意你正在使用的web应用。

刷新令牌过期的唯一原因是你的应用程序仍在测试中。如果你把它移到谷歌开发者控制台的oauth同意屏幕下的生产中,刷新令牌将停止过期。

然而,如果你可以使用一个服务帐户,那么真的没有理由使用一个web应用程序。

最新更新