Tag: 谷歌的API的Java客户端

drive.changes()。watch返回GoogleJsonResponseException:401未经授权而没有任何消息

我正在尝试关注Google云端硬盘的变化,并获得401例外。 在这里搜索,我发现人们有详细的信息,为什么他们没有未经授权,尽管我什么都没有。 这里我使用的代码: public static void main(String[] args) { try { httpTransport = GoogleNetHttpTransport.newTrustedTransport(); dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR); // authorization GoogleCredential credential = GoogleCredential.getApplicationDefault() .createScoped(DriveScopes.all()); boolean refreshed = credential.refreshToken(); // set up the global Drive instance drive = new Drive.Builder(httpTransport, JSON_FACTORY, credential) .setApplicationName(APPLICATION_NAME) .build(); Channel channel = new Channel(); channel.setId(UUID.randomUUID().toString()); channel.setType(“web_hook”); //my ip here channel.setAddress(“https://com.example:”); […]

Google API for Google Docs,请求文档列表 – 400 Bad Request

从谷歌服务器validation谷歌文档后,我做了一个简单的getResponse,但我收到400错误请求。 我不明白我哪里错了。 示例代码如下 private void executeRefreshAlbums() { HttpRequest request = transport.buildGetRequest(); request.url = GoogleDocsUrl.forDefaultPrivateFull(); System.out.println(“URL = “+request.url); try { HttpResponse response = request.execute(); System.out.println(“Response = “+response.getContent()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } sysout打印正确的URL作为 03-12 17:36:59.573: INFO/System.out(451): URL = https://docs.google.com/feeds/default/private/full 但是,当我这样做时,我得到了 03-12 17:43:41.360: WARN/System.err(3958): com.google.api.client.http.HttpResponseException: 400 Bad Request 03-12 […]

如何使用Google API Client Library for Java检索youtube缩略图

如果您能够让我知道使用Google API Client Library for Java检索youtube缩略图的方法,我将不胜感激,类似于我们使用gdata获取缩略图的方式。 List thumbnails = new LinkedList(); for (MediaThumbnail mediaThumbnail : mediaGroup.getThumbnails()) { thumbnails.add(mediaThumbnail.getUrl()); } 期待,问候,Rony

Google Analytics 3.0身份validation流程

编辑:最初这个问题询问我如何仅使用我的API密钥对Google AnalyticsAPI进行身份validation。 正如vlatko指出的那样 ,这是不可能的。 现在我只专注于让OAuth2工作。 当我有机会时,我会尝试vlatko的建议,并会更新问题。 在此期间,您可以随意为您认为我缺少的任何事情贡献答案。 原始问题: 我正在尝试向Google AnalyticsAPI提出请求。 我正在浏览Hello Analytics教程,尝试复制这些步骤。 无论我尝试什么,我似乎都无法成功地进行身份validation。 该教程说明如下: 打开您创建的名为HelloAnalyticsApi.java的文件,并添加以下方法: private static Analytics initializeAnalytics() throws Exception { // Authorization. Credential credential = OAuth2Native.authorize( HTTP_TRANSPORT, JSON_FACTORY, new LocalServerReceiver(), Arrays.asList(AnalyticsScopes.ANALYTICS_READONLY)); // Set up and return Google Analytics API client. return Analytics.builder(HTTP_TRANSPORT, JSON_FACTORY) .setApplicationName(“Google-Analytics-Hello-Analytics-API-Sample”) .setHttpRequestInitializer(credential) .build(); } 当用户遇到此脚本时,应用程序将尝试打开默认浏览器并将用户导航到google.com上托管的URL。 此时,将提示用户登录并授予应用程序访问其数据的权限。 一旦授予,应用程序将尝试从浏览器窗口中读取代码,然后关闭窗口。 不同之处在于我正在尝试使用servlet应用程序执行此操作,并且我希望使用API​​密钥(而不是OAuth 2.0客户端ID)进行简单的API访问。 我知道建议使用OAuth […]

使用Java blogger API v3动态发布在博客上

关于使用Java blogger API v3动态地将post发布到我的博客帐户,我有两个问题。 第一 我使用以下代码获取访问我的博客的凭据: GoogleCredential credential = new GoogleCredential.Builder() .setTransport(httpTransport) .setJsonFactory(JSON_FACTORY) .setServiceAccountId(emailAddress) .setServiceAccountPrivateKeyFromP12File( new File(p12FileLocation)) .setServiceAccountScopes(Collections.singleton(BloggerScopes.BLOGGER)) .build(); credential.setAccessToken(“zRLqmkM82626Uym9Uv1Jsdd”); Blogger blogger = new Blogger.Builder(httpTransport, JSON_FACTORY, credential) .setApplicationName(“Blogger”) .build(); // …. rest of the code to prepare post and send it …… 我设置了以下google页面生成的访问令牌(credential.setAccessToken): https : //developers.google.com/oauthplayground 但是此令牌每3600秒过期一次。 所以我再次访问该页面并按下“刷新访问令牌”按钮以获取另一个并在上面的代码中再次使用它。 这是访问我的博客和以编程方式动态发布内容和文章的正确方法吗? 第二 在谷歌开发者控制台https://developers.google.com/console我看到我有10000个请求/天和1个请求/秒/用户的限制 但 在使用我的上述代码动态正确发布大约50个post之后(注意我在连续请求之间设置等待大约5秒),我开始从api调用中收到以下错误: { “code” […]

如何使用服务帐户正确获取用户的日历事件?

我正在尝试为域中的用户检索日历事件。 我有服务帐户访问权限,但是当我尝试获取特定用户事件时,我收到404错误。 inheritance人连接代码: NetHttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); GoogleCredential credential = new GoogleCredential.Builder() .setTransport(httpTransport) .setJsonFactory(JSON_FACTORY) .setServiceAccountId(googleApiServiceAccountId) .setServiceAccountScopes(Collections.singleton(CalendarScopes.CALENDAR_READONLY)) .setServiceAccountPrivateKey(SecurityUtils.loadPrivateKeyFromKeyStore( SecurityUtils.getPkcs12KeyStore(), getClass().getClassLoader().getResourceAsStream(googleApiPrivateKeyPath), NOTASECRET, PRIVATEKEY, NOTASECRET)) .build(); calendarApi = new Calendar.Builder(httpTransport, JSON_FACTORY, credential).setApplicationName(getApplicactionName()).build(); 活动列表方法: public List getCalendarEventsForUserAndDates(String userEmail, Long dateFrom, Long dateTo) { try { String pageToken = null; List allEvents = Lists.newArrayList(); do { ArrayMap parameters = new […]

在Google Drive Java API中设置uploadType

我遇到了与此相同的问题,但是在Java域中。 这个问题也涵盖了我想要的内容,但由于没有答案,我想我会在这里提出一些更详细的问题。 我通过编写Java应用程序来将文件备份到Google云端硬盘。 正如其他人所发现的那样,“内部服务器错误500”失败是上传时非常常见的问题,但对于小文件,实现建议的指数退避和重试工作正常。 但是,对于大型文件(任何超过几MB),故障率都高得令人无法接受。 在某些情况下,我的失败率超过50%,这使得任何长期备份工作都无法实现。 使用Google Drive v2 API插入(上传)文件时, 文档会明确指出可以使用三种上传类型:简单,多部分和可恢复。 通过向端点URL添加参数来指定上载类型。 显然,我所追求的是可恢复的上传类型。 问题 似乎没有方法可以使用API​​设置此uploadType参数。 有一个方法调用来设置每个可选参数(如此处详述),但没有嗅探将uploadType设置为可恢复的方法。 没有代码片段,没有文档,没有任何内容。 有点令人困惑的是,似乎还有一个不相关的“分块”媒体上传模式,这是默认的,我实际上已通过调用request.getMediaHttpUploader().setDirectUploadEnabled(true)禁用我的应用程序,因为它似乎对上传的可靠性没有任何影响,无论chunksize设置的是什么,它都会大大减慢上传速度。 我正在绕过API并手动构建请求,但我真的想知道是否有其他人遇到过/先解决了这个问题。 这是一个明显的遗漏,我无法相信很多人以前没有遇到它。 干杯全都。 大卫。

GmailApiQuickstart –

我很尴尬,我只是失败了一段示例代码,但我会责怪它已经晚了… 我已经复制并粘贴了以下内容: https : //developers.google.com/gmail/api/quickstart/quickstart-java并下载了客户端库: https : //code.google.com/p/google-api- java-client /和https://developers.google.com/api-client-library/java/apis/gmail/v1 当我运行示例时,我得到以下exception: Exception in thread “main” java.lang.IllegalArgumentException at com.google.api.client.repackaged.com.google.common.base.Preconditions.checkArgument(Preconditions.java:76) at com.google.api.client.util.Preconditions.checkArgument(Preconditions.java:37) at com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets.getDetails(GoogleClientSecrets.java:82) at com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow$Builder.(GoogleAuthorizationCodeFlow.java:195) at com.emailreply.musterion.GmailApiQuickstart.main(GmailApiQuickstart.java:40) 谷歌搜索,我找不到一个简单的答案,所以假设愚蠢或库缺失/不正确。 我拥有的图书馆是: /libs/commons-logging-1.1.1.jar /libs/google-api-client-1.19.0.jar /libs/google-api-client-android-1.19.0.jar /libs/google-api-client-appengine-1.19.0.jar /libs/google-api-client-gson-1.19.0.jar /libs/google-api-client-jackson2-1.19.0.jar /libs/google-api-client-java6-1.19.0.jar /libs/google-api-client-servlet-1.19.0.jar /libs/google-http-client-1.19.0.jar /libs/google-http-client-android-1.19.0.jar /libs/google-http-client-appengine-1.19.0.jar /libs/google-http-client-gson-1.19.0.jar /libs/google-http-client-jackson2-1.19.0.jar /libs/google-http-client-jdo-1.19.0.jar /libs/google-oauth-client-1.19.0.jar /libs/google-oauth-client-appengine-1.19.0.jar /libs/google-oauth-client-java6-1.19.0.jar /libs/google-oauth-client-jetty-1.19.0.jar /libs/google-oauth-client-servlet-1.19.0.jar /libs/gson-2.1.jar /libs/httpclient-4.0.1.jar /libs/httpcore-4.0.1.jar /libs/jackson-core-2.1.3.jar /libs/jdo2-api-2.3-eb.jar /libs/jetty-6.1.26.jar /libs/jetty-util-6.1.26.jar /libs/jsr305-1.3.9.jar […]

java google custom search api

我正在尝试将Java客户端用于Google自定义搜索API,但无法在网上找到任何示例教程。 有人能为我提供一个简单的例子吗? 谢谢!

从谷歌api存储的凭据重用java

我已成功授权我的桌面应用程序。 它存储一个名为StoredCredential的文件。 为了不必每次运行应用程序时都将复制URL保存到浏览器,接受等步骤,我想使用我已存储的凭据。 我的代码到目前为止: GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder( httpTransport, JSON_FACTORY, CLIENT_ID, CLIENT_SECRET, SCOPE) .setDataStoreFactory(dataStoreFactory) .setApprovalPrompt(“auto”).setAccessType(“offline”).build(); // System.out.println(“flow success”); String url = flow .newAuthorizationUrl() .setRedirectUri(REDIRECT_URI) .build(); System.out.println(“Please open the following URL in your browser then ” + “type the authorization code:”); System.out.println(” ” + url); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String code = br.readLine(); […]