作为谷歌驱动程序用户(使用我的Gmail帐户),我想将我上传的文件的所有权转让给其他用户(使用他们的Gmail帐户).
我发现了这个方便的工具:https://github.com/davidstrauss/google-drive-recursive-ownership,它会调用此方法:
service.permissions().update(fileId=drive_item['id'],
permissionId=permission_id, body=permission, transferOwnership=True).execute()
Run Code Online (Sandbox Code Playgroud)
我已验证fileId是否正确,permission_id是否正确,以及作为正文传入的权限对象.
代码似乎很好,它对谷歌驱动器"本机"文件(如谷歌文档和电子表格)运行良好.
但是当针对上传的PDF运行时,会发生以下错误:
<HttpError 403 when requesting https://www.googleapis.com/drive/v2/files/0Bxz4bvKt4QekTWlUUHg0XzUydTa/permissions/18055737357773114524
?transferOwnership=true&alt=json returned "Insufficient permissions for this file">
Run Code Online (Sandbox Code Playgroud)
为什么改变"原生"谷歌云端硬盘文件的所有权任何想法,使用"更新"的方法,但改变上传文件的所有权(如PDF和docx文件)时不正常工作?
我正在尝试发送带有附件(最好是多个附件)的电子邮件,这些附件大于10 MB并且小于25 MB的总限制。我提到10 MB的原因是,这似乎是正常的附加文件方式停止起作用时得到的下限Error 10053。
我在文档中已经读到,做到这一点的最佳方法是使用可恢复的上载方法,但我无法使其正常工作,也无法在Python中找到任何好的示例。关于此的大多数SO问题都只是链接回到没有Python示例的文档,否则它们的代码会导致其他错误。
我正在寻找Python中的解释,因为我想确保自己理解正确。
我浏览过的问题:
码:
import base64
import json
import os
from email import utils, encoders
from email.message import EmailMessage
from email.mime import application, multipart, text, base, image, audio
import mimetypes
from apiclient import errors
from googleapiclient import discovery, http
from google.oauth2 import service_account
def send_email(email_subject, email_body, email_sender='my_service_account@gmail.com', email_to='', email_cc='', email_bcc='', files=None):
# Getting credentials
with open(os.environ.get('SERVICE_KEY_PASSWORD')) as f:
service_account_info …Run Code Online (Sandbox Code Playgroud) python mime email-attachments google-api-python-client gmail-api
我试图找出谷歌的GData API(之间的差异http://code.google.com/p/gdata-python-client/)和谷歌的API客户端库的Python(http://code.google.com/ p/google-api-python-client /).
他们似乎都是谷歌.哪个是官方的?他们有什么不同?第二个似乎主要使用OAuth.
如果有人有任何知识或使用经验,那么获得一些信息会很棒!
PS:我虽然把它放在超级用户身上,但因为它与编程有关,我认为这会更好.
python gdata-api gdata google-client google-api-python-client
好的我正在跟随"成为技术营销人员"课程,我正在尝试学习如何使用GSpread管理Google Spreadsheets.我已经按照http://gspread.readthedocs.io/en/latest/oauth2.html上的文档进行了操作.我按照上面第二个URL中的步骤操作了一个包含以下代码的文档:
import gspread
from oauth2client.service_account import ServiceAccountCredentials
scope = ['https://spreadsheets.google.com/feeds']
credentials = ServiceAccountCredentials.from_json_keyfile_name('DFS Google Sheets Data Imports-7205de852ff7.json', scope)
gc = gspread.authorize(credentials)
wks = gc.open("Authority Scraper").sheet1
wks.update_cell(1,2,"Hello World!")
Run Code Online (Sandbox Code Playgroud)
从那里我得到了终端中的错误:来自oauth2client.service_account import ServiceAccountCredentials ImportError:没有名为oauth2client.service_account的模块
有人请帮帮我.其他没有名为oath2client.service_account的模块的答案对我不起作用.谢谢!
python google-api-python-client gspread google-app-engine-python
主要用例是使用IPython作为我自己的Google帐户的CLI.我真正追求的是在启动IPython shell和实际发出针对API的有用调用之间的大小调整.
使用Google API进行身份验证的文档侧重于设置其他用户将用于访问其数据的应用程序.这导致了一个涉及浏览器的冗长的Oauth舞蹈,以便允许其他用户在不损害其凭证的情况下进行身份验证.但是,我不介意与自己分享我的私人凭证.我不打算分享代码.如果我确实共享了代码,我会使用类似的dotenv方法将凭据与代码分开.
Twitter为开发人员提供了第二组凭据,允许开发人员访问自己的帐户进行测试.因此,可以通过仅提供凭证集来以编程方式访问自己的帐户:允许调用API的开发人员凭证以及授予对开发人员自己的数据的访问权的其他凭证.对于例如:
from twitter import *
t = Twitter(
auth=OAuth(token, token_key, con_secret, con_secret_key))
# Get your "home" timeline
t.statuses.home_timeline()
# Update your status
t.statuses.update(
status="Tweeting from Python")
Run Code Online (Sandbox Code Playgroud)
con_secret*开发人员凭据和token*帐户访问凭据在哪里?
举个例子,从我自己的Youtube播放列表中检索内容的最简单的程序是什么?
我可以认为Python无头浏览器库可以给我我需要的东西.我已经在SE Software Recommendations上提出了相关问题 https://softwarerecs.stackexchange.com/questions/35744/python-headless-browser-library-for-oauth2-authentication-from-ipython-console
google-api google-authentication headless-browser google-oauth google-api-python-client
我有 python webapp2 应用程序,但是当我运行它时出现此错误
导入错误:没有名为 googleapiclient.discovery 的模块
我在 stackoverflow 中发现的是 ImportError: No module named apiclient.discovery
我试图按照人们所说的去做,但没有奏效
编辑:
点冻结
python google-app-engine google-api-client google-api-python-client
我正在尝试对谷歌机器学习项目的安全预测端点进行简单的休息调用,但它找不到 google.oauth2 模块。这是我的代码:
import urllib2
from google.oauth2 import service_account
# Constants
ENDPOINT_URL = 'ml.googleapis.com/v1/projects/{project}/models/{model}:predict?access_token='
SCOPES = ['https://www.googleapis.com/auth/sqlservice.admin']
SERVICE_ACCOUNT_FILE = 'service.json'
credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
access_token=credentials.get_access_token()
opener = urllib2.build_opener(urllib2.HTTPHandler)
request = urllib2.Request(ENDPOINT_URL)
request.get_method = lambda: 'POST'
result = opener.open(request).read()
print(str(result))
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我收到此错误:
Traceback (most recent call last):
File "wakeUpMLServer.py", line 30, in <module>
from google.oauth2 import service_account
ImportError: No module named oauth2
Run Code Online (Sandbox Code Playgroud)
我使用 pip 安装了 google-api-python-client 库(来自此处的说明:https : //developers.google.com/api-client-library/python/apis/oauth2/v1)。安装说成功了。Python 版本:2.7.6 Pip 版本:1.5.4
如果它有某种冲突,你应该知道我也在同一台服务器上进行 protobuf 文件处理,所以我也安装了 protobufs 库。当我执行 pip list 时,它会显示两个库: …
间歇性地收到此错误
请求https://www.googleapis.com/discovery/v1/apis/gmail/v1/rest时的 HttpError 403返回“调用方没有权限”
它有时有效,有时则无效。我在 oauth2 操场上看到了同样的问题
这是我的代码 -
googlecredentials = GoogleCredentials(
access_token=None,
client_id='xxx',
client_secret='xxxx',
refresh_token='xxxx',
token_expiry=None,
token_uri="https://www.googleapis.com/oauth2/v3/token",
user_agent='Python client library'
)
service = build('gmail', 'v1', credentials=googlecredentials)
results = service.users().labels().list(userId='me').execute()
labels = results.get('labels', [])
response = service.users().messages().list(userId='me', q='subject:FDA').execute()
print(response)
Run Code Online (Sandbox Code Playgroud) python oauth2-playground google-oauth google-api-python-client gmail-api
我想抓取200个结果大约2000个查询,但它给了我"超出每日限制"的错误.
我想确认每天可以抓取多少结果.有没有解决方案可以解决这个问题?或者唯一的方法是每天抓取一小部分查询......?
我抓取谷歌的代码如下:
def crawl(query_list):
http = httplib2.Http()
# Construct the service object for the interacting with the CustomSearch API.
service = discovery.build('customsearch', 'v1', developerKey='my api key', http=http)
res_list = []
for query in query_list:
json_res = service.cse().list(q = query, cx = 'my search engine id', num = 200,).execute()
res_list.append(json_res)
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在开发一个 python 脚本,它将文件上传到我的驱动器中的特定文件夹,正如我注意到的那样,驱动器 api 为此提供了一个很好的实现,但我确实遇到了一个问题,我如何一次删除多个文件?
我尝试从驱动器中抓取我想要的文件并组织它们的 ID,但没有运气......(下面的片段)
dir_id = "my folder Id"
file_id = "avoid deleting this file"
dFiles = []
query = ""
#will return a list of all the files in the folder
children = service.files().list(q="'"+dir_id+"' in parents").execute()
for i in children["items"]:
print "appending "+i["title"]
if i["id"] != file_id:
#two format options I tried..
dFiles.append(i["id"]) # will show as array of id's ["id1","id2"...]
query +=i["id"]+", " #will show in this format "id1, id2,..."
query = query[:-2] #to …Run Code Online (Sandbox Code Playgroud) python google-api delete-file google-drive-api google-api-python-client
python ×8
google-oauth ×3
gmail-api ×2
google-api ×2
delete-file ×1
gdata ×1
gdata-api ×1
gspread ×1
mime ×1