我在 Google Plus 上有大量相册。我正在寻找一种有效的方法来下载它们。如果我把它们放在 Google Drive 上,我就可以使用skicka,它有一些烦恼,但总体来说效果很好。
我正在寻找一个类似的命令行样式界面,它允许我以一种更可编写脚本的方式一次下载一张专辑,而不仅仅是浏览并单击 Google Plus 中的所有链接。
有谁知道是否存在这样的工具?如果我能让我的 Google Plus 照片出现在 Google 云端硬盘中,这就不成问题了,但不幸的是,这似乎不可能。
我知道 Google Drive 有一个 API。有没有办法使用它本质上使用 Google Docs 作为应用程序的富文本编辑器?即我希望能够执行以下操作:
google-docs rich-text-editor google-docs-api google-drive-realtime-api
在过去的几天里,我一直看到一些长期运行的实时应用程序出现了一些日益严重的问题.我已经完成了以下步骤,底部的代码片段包含应用程序的其他调试信息.
页面首次打开时,它成功请求OAuth令牌并加载实时文档[A].50分钟后(令牌到期前10分钟),它会成功重新请求新的OAuth令牌[B].第一个令牌到期后,当前打开的连接会收到401未经授权的错误,并需要一个新的oauth令牌[C].这本身就像一个问题,因为它应该更新自己以使用[B]中的新有效令牌.
但是,应用程序应该仍然可以适应这种情况发生的错误 - 因此可以通过关闭并重新打开doc [D]并获取另一个新的OAuth令牌来处理它.不幸的是,此时,实时API处于无限循环中,导致access_token [E]出错.
使用具有相同范围的gapi.auth.authorize并且不调用setToken来请求所有OAuth令牌.我之前尝试过使用setToken,但问题完全相同.
实际问题 处理为实时API刷新OAuth令牌的正确方法是什么?关闭并重新打开文档时,如何防止驱动API内部重复出现故障?
[A]
_aa: "1"
access_token: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXz9AYBkyympssqI"
client_id: "XXXXXXXXXXXXXXXX.apps.googleusercontent.com"
cookie_policy: undefined
expires_at: "1373610287"
expires_in: "3600"
g_user_cookie_policy: undefined
issued_at: "1373606687"
response_type: "token"
scope: Array[2]
state: ""
token_type: "Bearer"
[B]
_aa: "1"
access_token: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXV2kzG4EMUppi"
client_id: "XXXXXXXXXXXXXX.apps.googleusercontent.com"
cookie_policy: undefined
expires_at: "1373613288"
expires_in: "3600"
g_user_cookie_policy: undefined
issued_at: "1373609688"
response_type: "token"
scope: Array[2]
state: ""
token_type: "Bearer"
[C]
GET https://drive.google.com/otservice/bind?id=1B-XXXXXXXXXXXXXXXXXXXXX_nRizfqmT…&RID=rpc&SID=XXXXXXXXXXXXXXXXX&CI=0&AID=221&TYPE=xmlhttp&zx=ns6e5dr7rf4&t=1 401 (Unauthorized)
Drive Realtime API Error: token_refresh_required: The OAuth token must be refreshed. 
[D]
[Close Realtime Document] …google-api google-drive-api google-oauth google-drive-realtime-api
我已经创建了一个用于Google云端硬盘API的服务帐户,如下所示:https : //developers.google.com/drive/delegation
阅读完所有内容后,我的印象是,该服务帐户应代表实际帐户运行,该帐户是所使用的Google Apps for Business域的一部分。
这样,我希望在处理Google云端硬盘文件夹时不需要处理特殊权限。但是,在验证并尝试列出文件夹的内容后,没有显示任何内容。
如果我将服务帐户的电子邮件地址专门添加到该文件夹的“共享”列表中,那么一切似乎都可以正常工作。我可以使用API列出文件夹中的文件。
我的问题是,这是应该的方式吗?还是我缺少允许服务帐户代表实际帐户访问文件夹而不必专门将服务帐户电子邮件地址添加到共享列表的内容?
感谢您的时间。
我正在尝试运行Google云端硬盘Real Time API的快速入门代码.我相信我做的一切都是正确的.但我得到了
Error: origin_mismatch
Request Details
    openid_connect_request=true
    cookie_policy_enforce=false
    scope=https://www.googleapis.com/auth/drive.install https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/plus.me
    response_type=token
    access_type=online
    redirect_uri=postmessage
    proxy=oauth2relay601571239
    origin=http://127.0.0.1
    state=811328575|0.818765953
    display=page
    client_id=XXXXXXXXXX
oauth google-drive-api google-oauth google-drive-realtime-api
我正在使用Python 2.7和服务帐户将Google云端硬盘中的文件根据其标题复制到另一个文件夹中.这需要我执行五(5!)个命令:
files().list)files().list)查找父文件夹IDfiles().copy)files().insert)parents().insert)这一切都有效,但我想减少通话次数,首先这意味着缓存ID,所以我不必打电话files().list.接下来的事情,我试图做的,具体我在哪里这个问题,是如何设置的父文件夹中的files().copy命令.该文档有一个可选parents参数,如下所示:
包含此文件的父文件夹的集合.设置此字段会将文件放在所有提供的文件夹中.在插入时,如果未提供文件夹,则该文件将放在默认的根文件夹中.
虽然它没有说,我知道这意味着父ID,因为这是其他地方使用的.但是,在客户端库中设置此数组不会产生任何效果:没有错误,文件肯定不在正确的文件夹中.
newfile = {'title': newtitle, 'parents' : [ parentFolderId ]}
service.files().copy(fileId=originalId, body=newfile).execute()
有没有人有任何运气与此?还有什么我想念的吗?
奖励:在复制命令中转移所有权?也许我的服务帐户可能会冒充我?
我要创建的Web应用程序的要求之一是用户应该能够创建和编辑文档。我一直在搜索,发现了Google Drive REST API,但是我不确定它能做什么。
据我了解,API使我的应用程序可以访问用户的Google云端硬盘帐户及其文件,可以打开和编辑它们,以及使用我的应用程序创建文档。
但是,我希望可以使用Google Docs 编辑器本身来创建和打开/编辑文档,但是据我所知,该编辑器由我自己创建,并且可以使用Realtime API启用Google文档提供的协作功能。
是这样吗 Google是让我自己实际创建文档编辑Drive API器吗?(抱歉,如果我在这里听起来像个小孩子,这是一个诚实的问题),还是还提供他们的编辑器?我之所以要使用他们的编辑器,是因为它完全适合该应用程序的要求,而我几乎无法与他们的文档编辑器竞争。
如果我必须自己创建编辑器,谁能推荐任何具有与C#ASP.NET兼容的Google Docs编辑器功能类似的功能的开源/免费文档编辑器,或者以某种方式可以使用Google Docs我的应用程序中的编辑器?
我必须每天将网络应用程序的一组备份文件移动到谷歌驱动器。为此,我的朋友在谷歌驱动器中创建了一个文件夹,并以编辑权限与我共享,以便他也可以查看备份文件。
所以我使用 googledrive api 创建了一个应用程序(使用 python)并开始将文件上传到 googledrive。经过 7 次以上上传(每个文件 7*2GB 大小 =14GB)后,API 开始引发如下错误
发生错误:https://www.googleapis.com/upload/drive/v2/files?uploadType=resumable&alt=json 返回“用户已超出其云端硬盘存储配额”>
然后我检查了我的存储空间,它显示“14GB 已用完 15GB”。
为什么会发生这种情况?实际上,我将文件上传到我朋友创建的共享文件夹中,现在它显示这些文件已上传到我的配额中。还尝试了拖放选项,但它也上传到我的配额中
我有以下问题
1) 如何将文件上传至好友配额内的共享文件夹?2) 我的账户可以只上传15GB数据吗?或如何增加我的配额?
目前,我的 django 项目中有一个 google Drive API 客户端,可以按预期工作。
import unittest
from unittest import mock
DRIVE_API_VERSION = "v3"
DRIVE_API_SERVICE_NAME = "drive"
DRIVE_AUTHORIZED_USER_FILE = "path/to/secrets/json/file"
DRIVE_SCOPES = ['https://www.googleapis.com/auth/drive', 'https://www.googleapis.com/auth/drive.file ', 'https://www.googleapis.com/auth/drive.appdata']
def construct_drive_service():
    try:
        drive_credentials = google.oauth2.credentials.Credentials.from_authorized_user_file(
            DRIVE_AUTHORIZED_USER_FILE, scopes=DRIVE_SCOPES)
    except FileNotFoundError:
        print('Drive credentials not created')
        pass
    if drive_credentials:
        return build(DRIVE_API_SERVICE_NAME, DRIVE_API_VERSION, credentials=drive_credentials, cache_discovery=False)
    else:
        return None
现在我面临的挑战是为这个函数编写测试。但我不知道该使用什么策略。我试过这个
class TestAPICalls(unittest.TestCase):
    @mock.patch('api_calls.google.oauth2.credentials', autospec=True)
    def setUp(self, mocked_drive_cred):
        self.mocked_drive_cred = mocked_drive_cred
    @mock.patch('api_calls.DRIVE_AUTHORIZED_USER_FILE')
    def test_drive_service_creation(self, mocked_file):
        mocked_file.return_value = "some/file.json"
        self.mocked_drive_cred.Credentials.return_value = mock.sentinel.Credentials
        construct_drive_service()
        self.mocked_drive_cred.Credentials.from_authorized_user_file.assert_called_with(mocked_file)
但我的测试失败并出现以下错误
    with io.open(filename, 'r', …如何使用 Google Drive API 删除 Google Drive 中的文件?我\xe2\x80\x99m使用v3,我\xe2\x80\x99已经尝试了一切,但没有\xe2\x80\x99s工作。我相信我尝试过的那些已经过时了,当前的方法是什么?
\n\n更新:我并没有真正尝试代码,只是寻找一种方法,这就是我没有展示的原因。尽管如此,
\n\n\xc2\xa0service.files().delete(fileId=fileid).execute()\nI\xe2\x80\x99m 收到的错误与服务有关,它没有属性文件。我\xe2\x80\x99已经定义了其他所有内容(服务、文件ID),所以我\xe2\x80\x99已经得出结论,它\xe2\x80\x99已经过时了。
\n\n顺便说一句,对于任何错误,我很抱歉,我在手机上\xe2\x80\x99m。
\npython google-api python-3.x google-api-python-client google-drive-realtime-api
google-api ×2
google-oauth ×2
python ×2
python-3.x ×2
asp.net-mvc ×1
c# ×1
google-docs ×1
google-plus ×1
oauth ×1