Google drive api 我能';在我的谷歌硬盘中看不到通过代码创建的文件和文件夹
我是一名网络开发人员,我想从我的商业软件中访问谷歌API,我已经创建了一个驱动器帐户 我想通过代码(VB.NET)创建一个文件夹和文件。我遵循文档,创建了一个JWT(JSONWeb令牌),使用了一个服务帐户 我已经获得了一个访问令牌 现在我想访问谷歌API。 使用控制台应用程序,我创建了一些文件夹,我可以通过代码获得已创建文件夹的列表。 但是我在我的Google Drive帐户中看不到这些文件夹。怎么可能呢 以下是我向服务器发送的请求,以显示文件夹和文件列表: {FILE_ID}?key={API_key} 我获得一个JSON字符串作为响应,其中包含与FILE_ID元素相关的信息。 e、 g: { “种类”:“驱动器#文件”, “id”:“文件id”, “mimeType”:“application/vnd.google apps.folder”(如果是文件夹)/“FILE_mimeType”(如果是文件), “标题”:“文件夹名称”/“文件名称”, ... } 下面是我用来访问GoogleAPI的代码:(VB.NET) 在我的谷歌硬盘中,我没有手动创建文件夹,也没有手动上传文件,我必须通过代码完成所有操作 正如我对你们说过的,我已经成功地创建了一个文件夹,并且成功地打印了文件列表(通过代码),但是在我的GDrive中,元素是由UI创建的 不要出现。为什么?Google drive api 我能';在我的谷歌硬盘中看不到通过代码创建的文件和文件夹,google-drive-api,Google Drive Api,我是一名网络开发人员,我想从我的商业软件中访问谷歌API,我已经创建了一个驱动器帐户 我想通过代码(VB.NET)创建一个文件夹和文件。我遵循文档,创建了一个JWT(JSONWeb令牌),使用了一个服务帐户 我已经获得了一个访问令牌 现在我想访问谷歌API。 使用控制台应用程序,我创建了一些文件夹,我可以通过代码获得已创建文件夹的列表。 但是我在我的Google Drive帐户中看不到这些文件夹。怎么可能呢 以下是我向服务器发送的请求,以显示文件夹和文件列表: {FILE_ID}?key={AP
我在服务帐户中读到,为了获得访问令牌,需要一个名为JSON Web令牌(JWT)的特殊JSON字符串,该字符串由一个头组成, 声明集和签名(base64字符串)。 字符串为: {base64格式化JWT头}.{base64格式化JWT请求集}.{base64格式化JWT签名} 我的JWT是: 标题
{
"alg": "RS256",
"typ": "JWT"
}
{
"alg": "RS256",
"typ": "JWT"
}
索赔集
{
“国际空间站”:0123456789@developer.gserviceaccount.com“,//其中'0123456789'是客户端ID。
“范围”:https://www.googleapis.com/auth/drive",
“澳元”:https://accounts.google.com/o/oauth2/token",
“exp”:timeStamp+3600,//其中“timeStamp”是自1970-01-01T00:00:00以来的秒数。
“iat”:时间戳
}
要写签名,我遵循本页中描述的过程:
编写JWT后,我将其发送到服务器,并在这种模式下得到一个JSON字符串作为响应:
{
"access_token": "ACCESS_TOKEN", // (e.g.: 1/8xbJqaOZXS...)
"type_token": "Bearer",
"expire_in": 3600
}
{
"access_token": "ACCESS_TOKEN", // (e.g.: 1/8xbJqaOZXS...)
"type_token": "Bearer",
"expire_in": 3600
}
当我获得访问令牌(AT)时,我使用它访问Google API;例如:如果我要显示所有文件和文件夹列表,
我发送的请求的标题如下:
授权:持票人
X-JavaScript-User-Agent:Google API浏览器
url:{MY_API_KEY}
但我要强调的是,在列表中有一些项目(使用VB.NET控制台应用程序),而在我的Google驱动器中没有任何项目
所以我得到了访问令牌,但我没有成功访问谷歌API
PS:我需要访问谷歌API而不使用任何浏览器
第二部分:
我在服务帐户中读到,为了获取Acces令牌,需要一个名为JSON Web令牌(JWT)的特殊JSON字符串,该字符串由一个头组成,
声明集和签名(base64字符串)。
字符串为:
{base64格式化JWT头}.{base64格式化JWT请求集}.{base64格式化JWT签名}
我的JWT是:
标题
{
"alg": "RS256",
"typ": "JWT"
}
{
"alg": "RS256",
"typ": "JWT"
}
索赔集
{
“国际空间站”:0123456789@developer.gserviceaccount.com“,//其中'0123456789'是客户端ID。
“范围”:https://www.googleapis.com/auth/drive",
“澳元”:https://accounts.google.com/o/oauth2/token",
“exp”:timeStamp+3600,//其中“timeStamp”是自1970-01-01T00:00:00以来的秒数。
“iat”:时间戳
}
要写签名,我遵循本页中描述的过程:
编写JWT后,我将其发送到服务器,并在这种模式下得到一个JSON字符串作为响应:
{
"access_token": "ACCESS_TOKEN", // (e.g.: 1/8xbJqaOZXS...)
"type_token": "Bearer",
"expire_in": 3600
}
{
"access_token": "ACCESS_TOKEN", // (e.g.: 1/8xbJqaOZXS...)
"type_token": "Bearer",
"expire_in": 3600
}
当我获得访问令牌(AT)时,我使用它访问Google API;例如:如果我要显示所有文件和文件夹列表,
我发送的请求的标题如下:
授权:持票人
X-JavaScript-User-Agent:Google API浏览器
url:{MY_API_KEY}
但我要强调的是,在列表中有一些项目(使用VB.NET控制台应用程序),而在我的Google驱动器中没有任何项目
所以我得到了访问令牌,但我没有成功访问谷歌API
PS:我需要访问谷歌API而不使用任何浏览器
非常感谢并致以良好的问候
MP由于您使用的是服务帐户,因此所有文件夹和文件都将在此服务帐户的驱动器中创建,该驱动器无法通过web UI访问,并且将限制为默认配额 要在用户的驱动器中添加内容,您需要通过常规OAuth 2.0流程从该用户检索凭据。您可以在此页面上找到有关OAuth 2.0的更多信息:
- :它有一个C语言的快速入门示例,您可以使用
希望这有帮助。不知道给定的解决方案。在添加文件后,我通过添加文件权限做了不同的事情(用户在经典文件上载后调用NodeJS code.insertFile): 请注意,我正在使用JWT和私钥类型的身份验证,以及服务帐户:
exports.authorize = function(callback) {
if (_tokens && ((_tokens.expiry_date - (new Date()).getTime())>100 )) callback(null, _authClient);
else {
var scope = ['https://www.googleapis.com/auth/drive', 'https://www.googleapis.com/auth/drive.appdata', 'https://www.googleapis.com/auth/drive.apps.readonly',
'https://www.googleapis.com/auth/drive.file','https://www.googleapis.com/auth/drive.metadata',
'https://www.googleapis.com/auth/drive.metadata.readonly',
'https://www.googleapis.com/auth/drive.readonly',
'https://www.googleapis.com/auth/drive.scripts'];
var authClient = new google.auth.JWT(
'<myServiceAccountClientId - xxx@developer.gserviceaccount.com>',
'<path to key>.pem',
''); //seems we could use an user to impersonate requests, i need to test that..
authClient.authorize(function(err, tokens) {
if (err) {
callback(err);
return;
}
callback(null,authClient);
});
}
};
exports.authorize=函数(回调){
if(_tokens&(_tokens.expiration_date-(new date()).getTime())>100))回调(null,_authClient);
否则{
变量范围=['https://www.googleapis.com/auth/drive', 'https://www.googleapis.com/auth/drive.appdata","h",