标签: gdata-api

Google的已安装应用程序的Oauth与Web应用程序的Oauth

所以我很难理解一些东西

如果您对Web Apps执行Oauth,则需要使用回调URL注册您的站点并获得唯一的消费者密钥。但是,一旦获得了针对Web Apps的Oauth令牌,就无需从注册域中生成对Google服务器的Oauth调用。我经常使用笔记本电脑上本地主机上通过apache服务器运行的脚本中的密钥和令牌,而Google从不说“您不是从注册域发送此请求”。它只是向我发送数据。

现在,据我了解,如果您对已安装的应用程序执行Oauth,则将使用“匿名”而不是从Google获得的密钥。

我一直在考虑仅使用OAuth for Web Apps auth方法,然后将该令牌传递给已安装的应用程序,该应用程序将我的秘密代码嵌入其内部。令人担心的是,恶意人员可能会发现该代码。但是,有什么更安全的方法呢……使它们适用于秘密代码或让它们默认为匿名?

如果当替代方案使用“匿名”作为秘密时发现“秘密”,那么真正的坏处是什么呢?

authentication oauth gdata-api gdata

5
推荐指数
1
解决办法
1878
查看次数

使用Python的Google Docs API

使用Google Document API,我正在尝试创建新文档,并在我的Google文档中提供特定文件夹中所有当前文档的列表.我开始使用python开发,所以我仍然有点粗糙.

我想做的事情:

  1. 如果该名称尚不存在,则仅创建名称为[文件夹名称]的集合(或文件夹)
  2. 在[文件夹名称]中创建文档
  3. 仅从[文件夹名称]获取文档列表以及文档本身的链接

我相信我正在使用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)

所以现在回答问题:我无可救药地陷入困境:

  1. 如何检查[文件夹名称]是否存在?
  2. 如何检索仅[文件夹名称]的内容?
  3. 如何获取我在此文件夹中创建的所有文档的绝对链接?

我知道我离这里已经很远了,但是你能提供的任何帮助或建议都会很棒.

提前致谢!

python gdata-api google-docs-api

5
推荐指数
1
解决办法
3377
查看次数

通过OAuth 2.0和私钥(即服务帐户)访问Google通讯录Api

我目前正在通过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

5
推荐指数
1
解决办法
4822
查看次数

如何使用没有Zend Gdata库的PHP在非公共谷歌电子表格中保存数据?

如何在不使用Zend Gdata lib的情况下在PHP中保存非公共谷歌电子表格中的数据?我不能使用Zend libs,因为它在谷歌教程中显示,因为我运行脚本的php服务器是php v.5.0.4.我试图使用cUrl找到一个解决方案,但是当doc是unublic时我无法忽略身份验证的问题.我该怎么做?如果有人尝试过,请分享解决方案.

php gdata-api google-sheets

4
推荐指数
1
解决办法
4676
查看次数

在IFRAME中嵌入Google文档PDF查看器

当我将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文档.有人知道怎么做/如果可能吗?

python gdata-api google-docs

4
推荐指数
3
解决办法
3万
查看次数

Google日历查询最多可返回25个条目

我正试图从今天开始删除所有日历条目.我运行查询然后在查询结果上调用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)

google-calendar-api gdata-api

4
推荐指数
1
解决办法
6227
查看次数

YouTube Java API问题

我正在尝试使用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)

我不确定异常与我正在做的事情有什么关系.任何提示都表示赞赏.

java youtube gdata-api youtube-api

4
推荐指数
1
解决办法
2065
查看次数

gdata-java-client和google-api-java-client有什么区别?

我正在开发一个与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之上?

java gdata-api gdata-java-client google-api-java-client

4
推荐指数
1
解决办法
1014
查看次数

在添加数据之前使用Python gdata清除工作表中的行

我有一个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)

python gdata-api

4
推荐指数
1
解决办法
2865
查看次数

使用Python GData API,无法获得可编辑的视频条目

我无法获得包含链接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.

python youtube django gdata-api gdata

3
推荐指数
1
解决办法
674
查看次数