当前位置: 首页 > 知识库问答 >
问题:

Google Apps电子邮件设置API和oauth2.0凭据及服务帐户

温亮
2023-03-14

我试图使用Oauth 2.0 Google Credential和java中的服务帐户来编辑用户签名,但我收到了一个错误:

com.google.gdata.util.ServiceForbiddenException: OK
<HTML><HEAD><TITLE>You are not authorized to access this API.</TITLE></HEAD><BODY BGCOLOR="#FFFFFF" TEXT="#000000"><H1>You are not authorized to access this API.</H1><H2>Error 403</H2></BODY></HTML>

我创建了一段代码,在这种模式下将GoogleCredential对象与服务帐户电子邮件一起使用:

  HttpTransport httpTransport = new NetHttpTransport();
  JacksonFactory jsonFactory = new JacksonFactory();
  Collection<String> clist= new ArrayList<String>(
            Arrays.asList("https://apps-apis.google.com/a/feeds/emailsettings/2.0/",                    "https://www.googleapis.com/auth/admin.directory.user" 
                    ));
  GoogleCredential gc=null;
try {
    gc = new GoogleCredential.Builder().setTransport(httpTransport)
      .setJsonFactory(jsonFactory)
      .setServiceAccountId(c.getServiceAccountEmail())
      .setServiceAccountScopes(clist)
      .setServiceAccountPrivateKeyFromP12File(new java.io.File(c.getPkcs12FileName()))
      .build();
} catch (GeneralSecurityException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
  this.setOAuth2Credentials(gc);

我已经在服务帐户的域Google Apps for Business面板中插入了作用域,并在控制台项目中启用了Admin sdk API。

为什么我收到未经授权的邮件?我被允许使用Oauth 2.0,而不是像这段代码中的unsername和admin密码?

https://developers.google.com/admin-sdk/email-settings/#manage_signature_settings

为什么没有一个官方的gmail设置服务不是用于示例的appsforyoudomainservice?支持Oauth 2.0和服务帐户吗?

非常感谢。

共有1个答案

呼延才
2023-03-14

您已授予服务号代表用户行事的权限。现在,服务号需要充当域中的用户,有权为所有用户执行签名更新,换句话说,它需要充当超级管理员。尝试添加:

.setServiceAccountUser(用户电子邮件)

其中userEmail是您的Google Apps实例中超级管理员的电子邮件地址。管理SDK文档中有一个很好的演练。

 类似资料:
  • 如何专门为服务帐户而不是用户帐户启用API服务? 上下文:我正在使用一个Python脚本本地测试一个云函数(查询BQ,将结果转换为json,加入GCS bucket)。我可以用我自己的测试帐户来做这件事,在那里我能够启用服务,但是不确定我将如何为客户的服务帐户做这件事(或者客户如何着手做这件事)。我自己的服务账户是这样做的: 作为JSON获取服务帐户凭据 跟踪gcloud cloud SDK的安装

  • 我正在通过DocuSign eSignature API成功发送信封,并且对作为签名过程一部分发送的电子邮件有疑问。发送请求时,我会收到以下电子邮件(使用沙盒环境): > 当每个收件人单击链接查看要签署的协议时,向我发送电子邮件(例如,“John Smith查看了Acme共同客户协议”) 协议完成后,向我(和每位收件人)发送电子邮件。 我正试图了解每一项都有哪些选项可供选择,因为: 启用/禁用每封

  • 您可以通过此界面创建和管理域的电子邮件帐户。 您可以创建电子邮件地址,配置邮件客户端,更改密码以及直接访问您的Webmail。 创建电子邮件地址 要为您的域创建电子邮件地址,请按以下步骤操作 - Step 1 - 单击cPanel主页的“电子邮件”部分中的“ Email Accounts链接。 Step 2 - 在电子邮件帐户中,您会在顶部找到添加电子邮件帐户。 Step 3 - 添加您要创建的电

  • 我试图让一个django站点启动并运行,我试图启用django的标准密码重置服务。 我的网站是由AWSEC2托管的,所以我想我应该使用AWSES来提供电子邮件服务。但是,我无法使smtp连接正常工作。关于如何解决以下错误的任何想法: 异常类型:拒绝异常值:(530, b'身份验证必需','example@example.com') 我看了以下内容,但如果可能的话,我更喜欢使用django内置的电子

  • 我成功地使用OAuth授权码授权流通过DocuSign进行身份验证并发送信封。签名人收件人收到电子邮件通知时,会多次引用DocuSign帐户的名称/电子邮件地址,例如,发件人显示为: 电子邮件正文中包括弗雷德·史密斯及其电子邮件地址fred@acme.com 。我们希望能够在创建信封时动态/以编程方式更改发送的电子邮件通知中的这些引用。 到目前为止,我还没有在API文档中看到这方面的任何选项-这是

  • 问题内容: 环境: Windows 2008 R2 Jenkins1.580.2 LTS Mailer plugin 1.12 Email Extension Plugin 2.39 Java 8 在将我的Jenkins CI服务器配置为在移至Office365中的“企业”帐户后发送电子邮件通知时遇到一些问题。所以这是我的配置: Jenkins从StartTLS支持开始(带有参数’-Dmail.s