所以我很难理解一些东西
如果您对Web Apps执行Oauth,则需要使用回调URL注册您的站点并获得唯一的消费者密钥。但是,一旦获得了针对Web Apps的Oauth令牌,就无需从注册域中生成对Google服务器的Oauth调用。我经常使用笔记本电脑上本地主机上通过apache服务器运行的脚本中的密钥和令牌,而Google从不说“您不是从注册域发送此请求”。它只是向我发送数据。
现在,据我了解,如果您对已安装的应用程序执行Oauth,则将使用“匿名”而不是从Google获得的密钥。
我一直在考虑仅使用OAuth for Web Apps auth方法,然后将该令牌传递给已安装的应用程序,该应用程序将我的秘密代码嵌入其内部。令人担心的是,恶意人员可能会发现该代码。但是,有什么更安全的方法呢……使它们适用于秘密代码或让它们默认为匿名?
如果当替代方案使用“匿名”作为秘密时发现“秘密”,那么真正的坏处是什么呢?
使用Google Document API,我正在尝试创建新文档,并在我的Google文档中提供特定文件夹中所有当前文档的列表.我开始使用python开发,所以我仍然有点粗糙.
我想做的事情:
我相信我正在使用Google Docs API 3.0并且正在使用gdata-2.0.16 helper for python.
代码到目前为止:
import gdata.docs.data
import gdata.docs.client
class SampleConfig(object):
APP_NAME = 'GDataDocumentsListAPISample-v1.0'
DEBUG = False
client = gdata.docs.client.DocsClient()
client.ClientLogin('[email_address]','[password]',source=SampleConfig.APP_NAME )
col = gdata.docs.data.Resource(type='folder', title='Folder Name')
col = client.CreateResource(col)
doc = gdata.docs.data.Resource(type='document', title='I did this')
doc = client.CreateResource(doc, collection=col)
所以现在回答问题:我无可救药地陷入困境:
我知道我离这里已经很远了,但是你能提供的任何帮助或建议都会很棒.
提前致谢!
我目前正在通过OAuth 2.0和所谓的服务帐户实施对Google通讯录的访问.为普通用户生成服务帐户,例如"My.Name@gmail.com".
生成OAuth 2.0凭据的代码是:
public static GoogleCredential getCredentials() throws GeneralSecurityException, IOException {
GoogleCredential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(SingleUserCredentials.SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes("https://www.google.com/m8/feeds")
.setServiceAccountPrivateKeyFromP12File(new File(SingleUserCredentials.SERVICE_ACCOUNT_PKCS12_FILE_PATH))
.build();
credential.refreshToken();
return credential;
}
Run Code Online (Sandbox Code Playgroud)
然后我试图通过以下方式检索联系人:
ContactsService myService = new ContactsService(
"myApp");
myService.setOAuth2Credentials(getCredentials());
URL feedUrl = new URL("https://www.google.com/m8/feeds/contacts/default/full");
Query myQuery = new Query(feedUrl);
ContactFeed resultFeed = myService.query(myQuery, ContactFeed.class);
// Print the results
for (ContactEntry entry : resultFeed.getEntries()) {
System.out.println(entry.getName().getFullName().getValue());
System.out.println("Updated on: " + entry.getUpdated().toStringRfc822());
}
Run Code Online (Sandbox Code Playgroud)
问题是我的帐户中没有任何一个联系人.Feed始终为空.没有错误.没有.
通过相同的方法访问Google Apps托管域时,它可以正常运行.
我想知道在使用p12密钥文件和服务帐户时,Contacts Api是否支持普通(也称为@ gmail.com)帐户的OAuth 2.0.
gdata-api google-api google-contacts-api oauth-2.0 service-accounts
如何在不使用Zend Gdata lib的情况下在PHP中保存非公共谷歌电子表格中的数据?我不能使用Zend libs,因为它在谷歌教程中显示,因为我运行脚本的php服务器是php v.5.0.4.我试图使用cUrl找到一个解决方案,但是当doc是unublic时我无法忽略身份验证的问题.我该怎么做?如果有人尝试过,请分享解决方案.
当我将PDF上传到Google Docs时(使用Python的gdata库),我获得了该文档的链接:
>>> e.GetAlternateLink().href
Out[14]: 'http://docs.google.com/a/my.dom.ain/fileview id=<veery-long-doc-id>&hl=en'
Run Code Online (Sandbox Code Playgroud)
不幸的是,在IFRAME中使用该链接对我不起作用,因为PDF查看器正在重定向到自身,从而突破了IFRAME.
寻找解决方案,我发现了这个:http://googlesystem.blogspot.com/2009/09/embeddable-google-document-viewer.html - 看起来很不错,但我找不到办法使用将文档上传到Google文档.有人知道怎么做/如果可能吗?
我正试图从今天开始删除所有日历条目.我运行查询然后在查询结果上调用getEntries().getEntries()始终返回25个条目(如果日历上的条目少于25个,则返回更少).为什么不归还所有条目?我期待大约80个参赛作品.
作为测试,我尝试运行查询,删除返回的25个条目,再次运行查询,再次删除等.这有效,但必须有更好的方法.
以下是仅运行一次查询的Java代码.
CalendarQuery myQuery = new CalendarQuery(feedUrl);
DateFormat dfGoogle = new SimpleDateFormat("yyyy-MM-dd'T00:00:00'");
Date dt = Calendar.getInstance().getTime();
myQuery.setMinimumStartTime(DateTime.parseDateTime(dfGoogle.format(dt)));
// Make the end time far into the future so we delete everything
myQuery.setMaximumStartTime(DateTime.parseDateTime("2099-12-31T23:59:59"));
// Execute the query and get the response
CalendarEventFeed resultFeed = service.query(myQuery, CalendarEventFeed.class);
// !!! This returns 25 (or less if there are fewer than 25 entries on the calendar) !!!
int test = resultFeed.getEntries().size();
// Delete all the entries returned by the query
for (int j = …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用YouTube Java GData库/ API获取特定用户的视频列表.
但是,当我尝试使用创建服务时YouTubeService service = new YouTubeService("Cyphon-MyCampusPulse-1", YOUTUBE_API_KEY);,我得到以下运行时异常:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/MessagingException
at scrapers.YouTubePulseScraper.<init>(YouTubePulseScraper.java:37)
at scrapers.YouTubePulseScraper.main(YouTubePulseScraper.java:153)
Caused by: java.lang.ClassNotFoundException: javax.mail.MessagingException
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 2 more
Run Code Online (Sandbox Code Playgroud)
我不确定异常与我正在做的事情有什么关系.任何提示都表示赞赏.
我正在开发一个与Youtube API接口的项目.我遇到过两个项目(1)gdata-java-client和(2)google-api-java-client.
项目的范围(和名称)有点令人困惑.似乎google-api-java-client是用于处理Web数据的通用API.相比之下,gdata-java-client处理谷歌特定数据(例如,YouTube API).这是正确的表征吗?
如果是这样,gdata-java-client是否建立在google-api-java-client之上?
我有一个Google电子表格,我使用python脚本和gdata库填充值.如果我不止一次运行脚本,它会在工作表中添加新行,我希望脚本在填充之前首先清除行中的所有数据,这样每次运行时都会有一组新的数据脚本.我尝试过使用:
UpdateCell(row, col, value, spreadsheet_key, worksheet_id)
Run Code Online (Sandbox Code Playgroud)
但是没有像这样运行两个for循环,是否有一种更清洁的方式?这个循环似乎也非常缓慢:
for x in range(2, 45):
for i in range(1, 5):
self.GetGDataClient().UpdateCell(x, i, '',
self.spreadsheet_key,
self.worksheet_id)
Run Code Online (Sandbox Code Playgroud) 我无法获得包含链接rel ="edit"的视频条目.我需要这样一个条目才能调用DeleteVideoEntry(...)它.
我正在使用检索视频GetYouTubeVideoEntry(youtube_id=XXXXXXX).我的yt_service使用用户名,密码和开发人员密钥进行初始化.我使用ProgrammaticLogin.这部分似乎工作正常.我使用相同的yt_service来提前上传所述视频.此外,如果我将开发人员密钥更改为虚假(在调试期间)并尝试进行身份验证,我会收到403错误.这让我相信认证工作正常.
不用说,检索到的视频条目GetYouTubeVideoEntry(youtube_id=XXXXXXX)不包含编辑链接,我不能在DeleteVideoEntry(...)通话中使用该条目.
是否有一些特殊的方法来获取一个视频条目,其中包含一个带有rel ="edit"的链接元素?有谁能建议某种方法来解决我的问题?这可能是一个错误吗?
更新:
对于记录,当我尝试获取所有上传的源,然后循环浏览视频条目时,视频条目确实有一个编辑链接.所以使用这个工作:
uri = 'http://gdata.youtube.com/feeds/api/users/%s/uploads' % username
feed = yt_service.GetYouTubeVideoFeed(uri)
for entry in feed.entry:
yt_service.DeleteVideoEntry(entry)
Run Code Online (Sandbox Code Playgroud)
但这不是:
entry = yt_service.GetYouTubeVideoEntry(video_id = video.youtube_id)
yt_service.DeleteVideoEntry(entry)
Run Code Online (Sandbox Code Playgroud)
使用相同的yt_service.
gdata-api ×10
python ×4
gdata ×2
java ×2
youtube ×2
django ×1
google-api ×1
google-docs ×1
oauth ×1
oauth-2.0 ×1
php ×1
youtube-api ×1