【问题标题】:Xpage java code to interact with gmail apiXpage java代码与gmail api交互
【发布时间】:2016-01-04 00:14:02
【问题描述】:

使用 Domino Designer 9.0.1FP3 如何使用 Gmail API?

通过此链接https://developers.google.com/gmail/api/quickstart/java 尝试了示例 Java 代码,但没有任何运气,如下所示:

  1. 导入必要的 gmail api .jar 最新版本。
  2. 安装的 jre 为 8 并为 jre 8 路径设置构建路径
  3. 编译器 JRE 版本仍与默认 1.5 相同。

任何帮助将不胜感激。

这是与 gmail api 交互的 java 代理:

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.List;

import lotus.domino.*;

import com.google.api.client.auth.oauth2.Credential;
import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.util.store.FileDataStoreFactory;
//import com.google.api.*;
/***/The following lines has error "import can not be resolved". I've imported jar and their sources from gmail .jar file zip***
import com.google.api.services.gmail.*;
import com.google.api.services.gmail.GmailScopes;
import com.google.api.services.gmail.model.*;
import com.google.api.services.gmail.Gmail;





public class JavaAgent extends AgentBase {


    public void NotesMain() {
         /** Application name. */
        final String APPLICATION_NAME =
            "Gmail API Java Quickstart";
        /** Directory to store user credentials for this application. */
        final java.io.File DATA_STORE_DIR = new java.io.File(
            System.getProperty("user.home"), ".credentials/gmail-java-quickstart");

        FileDataStoreFactory DATA_STORE_FACTORY;

        /** Global instance of the JSON factory. */
        final JsonFactory JSON_FACTORY =
            JacksonFactory.getDefaultInstance();

        HttpTransport HTTP_TRANSPORT;

        /* Global instance of the scopes required by this quickstart. */
        final List<String> SCOPES =
         //   Arrays.asList(com.google.api.services.gmail.GmailScopes.)//.GMAIL_LABELS);
Arrays.asList(com.google.api.)

        try {
          Session session = getSession();
          AgentContext agentContext = session.getAgentContext();

          // (Your code goes here)

      } catch(Exception e) {
          e.printStackTrace();
       }
   }

【问题讨论】:

标签: java xpages gmail-api


【解决方案1】:

好的,您需要确保 API 可以真正在 Java 1.6 上运行,正如 Per 提到的那样。

您可以通过多种方式将 jars 添加到 Domino:

1. JVM ext/lib 目录下

这很好用——维护起来很痛苦,因为所有事情都需要在文件系统中完成(也在您的 Domino Designer 中)。这适用于 XPage 以及代理。

2。将 jar 附加到您的代理/脚本库

这仅适用于在代理(或 Web 服务)中运行的代码。但是,每次调用代码时都会发生内存泄漏(并且 jar 在内部分离)。所以不要用这个!

3.将罐子添加为罐子设计元素

这也应该有效 - 虽然我没有太多经验。我担心与上述元素相同的问题 - 但没有证据。所以你可能很好地使用它 - 只适用于 XPages。

4.将 jar 添加为插件

您可以将 jar 包装到 OSGi 插件中并在服务器范围内部署它(上面的 2 和 3 仅使 jar 可用于 jar 所在的 NSF)。这是迄今为止我的首选方式。我写了一个article about the details 可以帮助你。

/约翰

【讨论】:

  • 另外,如果在 NSF 中安装 jar,如果您收到 NoClassDefFoundError,请尝试更改安全设置以允许 java.policy 中的所有权限。如果这样可以解决问题,那么选项 4 就是要走的路。 Domino 的 Java 安全性是从 Websphere 复制而来的,并没有尽可能多地委托给 Domino 服务器。 Java 8 将在下一个版本中加入 Domino,可能在明年初。最近发布的 Mac 安装已经包含一些 Java 8 文件,这证明了 IBM 正在寻找的地方。
  • 没错,你会遇到权限问题。如果您使用选项 4,您可以解决此问题 - 请参阅:dalsgaard-data.eu/blog/… :-)
  • 我没有任何权限错误。大多数错误与 .gmail api 中的类和方法有关,例如“CalendarSample 无法解析为类型”
  • ...您是如何添加应用程序使用的 jar 的?
  • 使用代理的存档功能添加 .jar 意味着将 .jar 文件作为存档导入到代理中
【解决方案2】:
  1. 已安装 jdk1.7.079
  2. 在项目属性->Java Build Path中设置为JRE System Library(jdk1.7.079)

没有更多的编译错误。

【讨论】:

    猜你喜欢
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 2018-07-16
    • 2015-02-27
    • 1970-01-01
    相关资源
    最近更新 更多