我正在开发Google应用程序迁移/存档系统,在开发的这一点上,我正试图想出一种方法来下载我的域用户创建的所有组中的所有邮件.我知道我可以设置转发过滤器并将所有邮件存档到电子邮件中,但这对旧邮件没有帮助.
有没有办法从Google网上下载这些邮件?如果是这样,是否有管理API可以获取用户创建的所有群组的列表?
当我向Google网上论坛添加成员时,我收到了403 Request rate higher than configured错误消息.这适用于所有应用程序,包括Google开发人员网站上的API Explorer.
即使我在12个多小时内只发出一个请求,我仍然会收到错误.我已经确认Admin API在项目上有足够的配额.
它仅适用于单个Apps for Education域.
请求:
POST https://www.googleapis.com/admin/directory/v1/groups/[redacted]%40ryan.catholic.edu.au/members?key={YOUR_API_KEY}
{
"email": "<redacted>",
"role": "MEMBER"
}
Run Code Online (Sandbox Code Playgroud)
响应:
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "quotaExceeded",
"message": "Request rate higher than configured."
}
],
"code": 403,
"message": "Request rate higher than configured."
}
}
Run Code Online (Sandbox Code Playgroud) 我创建了一个Java应用程序,该程序执行MS Active Directory与Google网上论坛的同步。它是非交互式应用程序,假定由cronjob在夜间执行。它确实可以在我的笔记本电脑(DEV环境)上正常工作。我的问题是,在首次运行时,它会弹出浏览器窗口,并显示要求授权访问Google API的对话框。单击“允许”按钮后,它会愉快地进行到最后。现在,我需要将其移至运行CentOS且没有浏览器的生产服务器。当我在此环境中运行应用程序时,它会显示以下消息:
Please open the following address in your browser:
https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=520105804541-c7d7bfki88qr8dbkv6oahp22i3oq1jq0.apps.googleusercontent.com&redirect_uri=http://localhost:50089/Callback&response_type=code&scope=https://www.googleapis.com/auth/admin.directory.group.member%20https://www.googleapis.com/auth/admin.directory.orgunit%20https://www.googleapis.com/auth/admin.directory.device.mobile.action%20https://www.googleapis.com/auth/admin.directory.orgunit.readonly%20https://www.googleapis.com/auth/admin.directory.userschema%20https://www.googleapis.com/auth/admin.directory.device.chromeos%20https://www.googleapis.com/auth/admin.directory.notifications%20https://www.googleapis.com/auth/admin.directory.device.chromeos.readonly%20https://www.googleapis.com/auth/admin.directory.device.mobile%20https://www.googleapis.com/auth/admin.directory.group.readonly%20https://www.googleapis.com/auth/admin.directory.group.member.readonly%20https://www.googleapis.com/auth/admin.directory.userschema.readonly%20https://www.googleapis.com/auth/admin.directory.user.alias%20https://www.googleapis.com/auth/admin.directory.user.security%20https://www.googleapis.com/auth/admin.directory.device.mobile.readonly%20https://www.googleapis.com/auth/admin.directory.user%20https://www.googleapis.com/auth/admin.directory.user.readonly%20https://www.googleapis.com/auth/admin.directory.user.alias.readonly%20https://www.googleapis.com/auth/admin.directory.group%20https://www.googleapis.com/auth/apps.groups.settings
Run Code Online (Sandbox Code Playgroud)
这台机器上没有浏览器,但是如果尝试在另一个机器上运行它,则会收到错误400-无效请求。原因很明显,因为它重定向到localhost:50089,并且没有人在另一台计算机上的该端口上侦听。通过在developers.google.com上浏览了多个文档和示例,我找到了一种绕过对话框的方法,方法是创建服务帐户并为其生成主键。
try {
GoogleCredential cr = GoogleCredential
.fromStream(new FileInputStream(keyFile))
.createScoped(SCOPES);
Directory directory = new Directory.Builder(httpTransport, jsonFactory, cr)
.setApplicationName(config.getProperty("google.application.name")).build();
} catch (IOException ex) {
LOG.error("Failed to establish access credentials : ", ex.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
它确实读取了密钥并创建了Directory实例,但是对它的任何请求都将导致403响应代码
{“ code”:403,“ errors”:[{“ domain”:“ global”,“ message”:“未授权访问此资源/ api”,“ reason”:“禁止”
}],“ message”: “未授权访问此资源/ api”}”
但是我已经将该帐户的所有特权委派给了服务帐户。不知道我还能做什么。如果有人可以帮助我摆脱困境,我将不胜感激。
我创建了一个 oauth2 工作流程,可以正确登录。
我的范围是:
当我完成授权过程时,它列出了“查看和管理您的Google群组”,我认为这意味着我可以获得我所属的Google群组的列表。但是,我不知道在哪里发送请求来获取此信息。
向端点发送 GET 请求/admin/directory/v1/groups?userKey=userkey会返回一个403 insufficient scope. 但如果我添加到范围:
然后点击相同的端点,我收到一个,403 not authorized因为我不是该系统的管理员。(我也不应该)
我需要能够在登录过程中获取用户的组列表,而不仅仅是登录用户是管理员。这似乎可以通过具有组服务只读访问器的 Apps 脚本库来实现。我需要一个等效的 api 端点。这存在吗?我似乎找不到管理 SDK 之外的任何组访问的任何文档。
另外,如果我点击https://www.googleapis.com/auth/groups?userKey=userkey 我只会得到响应“groups”,所以这很好......
相关/可能重复:
但这里的建议指向App Script,而不是api
我想以编程方式将电子邮件地址添加到 Google 网上论坛。虽然有多种方法可以做到这一点,但似乎没有一种方法允许添加显示名称、昵称或仅添加名字和姓氏。
例如,代码(来自以编程方式将成员添加到谷歌群组):
GroupsManager.getGroup(group).addMember(emailAddress);
Run Code Online (Sandbox Code Playgroud)
如果电子邮件地址类似于 fred@example.com,则效果很好,但是如果我尝试添加 DisplayName,则不会。我努力了:
"Fred Surname" <fred@example.com>
Run Code Online (Sandbox Code Playgroud)
和弗雷德姓氏
但是,我刚刚收到一个未指定的错误。
任何帮助将不胜感激-任何语言,只要有一个例子!
非常感谢,
克莱姆·克拉克
我想对存储在 Google 群组中的消息进行一些分析,该群组是 Google Apps 域(企业)的一部分。
可以通过API读取它们吗?
在这篇 2014 年帖子Unable toretrieve Members of a google group, getting Invalid Input 的回答中
,您读到:“没有 API 可以以编程方式管理消费者 googlegroups.com 组”。
2018年还是这样吗?
我尝试遵循帖子How to get the list of Members in a Google group in Google app script (Admin SDK)?的答案3中的建议 但我收到以下错误消息:
ReferenceError:“AdminDirectory”未定义。(第 9 行,文件“代码”)
其中第 9 行(及以下)是 (are):
Run Code Online (Sandbox Code Playgroud)page = AdminDirectory.Members.list(groupKey, { domainName: 'googlegroups.@com', maxResults: 500, pageToken: pageToken, });
为了理解错误,我找到了Members: list的参考页面。使用该页面中的“尝试此 API”表单,我收到了我提到的第一篇文章中报告的错误。
如果“没有 API 可以以编程方式管理消费者 googlegroups.com 群组”不是真的,是否有指南可以在 google-sheet 中复制我拥有的群组成员列表?(我的意思是通过函数复制,而不是手动导出和重新导入 CSV)
非常感谢,Roberto Scotti
首先,提前感谢阅读这篇文章的任何人.
我的学校(我是教师/技术协调员)正在使用Google Apps for Education.我使用Provisioning API与我们的Microsoft Active Directory服务器通信,以便将用户和组与Google同步.我有一个运行ColdFusion 9和PHP的Web服务器.我是一个基本的公平ColdFusion程序员,我的PHP技能是新手级别.
我有至少3028个组我想更新replyTo字段说REPLY_TO_LIST(默认情况下创建组时,用户可以选择)
理想情况下,我希望发生的事情是ColdFusion服务器自动(每晚)联系Google,获取域中所有组的列表(用户有权创建组,以便此列表可能每天更改)并确保回复字段设置正确.
目前,我遇到了OAuth 2.0的问题.我已经阅读了文档,并对我需要做什么感到困惑.我一直在寻找互联网,并发现了很多我头脑中的材料.我得到的最接近的是Ray Camden的精彩帖子.但是,当我为Google网上论坛修改它时,我得到:
错误:invalid_request缺少必需参数:response_type
但是,response_type肯定存在.
我很确定这是我的范围,这是我的问题的开始,我发现了多个不同的引用,例如:
以下是我目前在GoogleGroupModifier.cfm中的内容:
<cfset authurl = "https://accounts.google.com/o/oauth2/auth?"
& "client_id=#urlEncodedFormat(application.clientid)#"
& "&redirect_uri=#urlEncodedFormat(application.callback)#"
& "&scope=https://www.googleapis.com/auth/apps.groups.settings?response_type=code">
<cfoutput>
/groups/v1/groups/
authurl=#authurl#
<p><a href="#authurl#">Login</a></p>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)
和Application.cfc:
<cfcomponent>
<cfset This.name = "googlegroups">
<cfset This.Sessionmanagement="True">
<cffunction name="onApplicationStart" returntype="boolean" access="public">
<cfset application.clientid = "88888.apps.googleusercontent.com">
<cfset application.clientsecret="zzzzzz_">
<cfset application.callback="http://mydomain.org/wwp/google/GoogleGroupModifier.cfm">
<cfreturn true>
</cffunction>
</cfcomponent>
Run Code Online (Sandbox Code Playgroud)
有人可以提供任何建议吗?我知道有关于GITHUB的信息,但是我在那里试过的东西我似乎无法开始工作.
我在互联网上发现了很多关于将成员添加到Googlegroups中的群组的信息,但我无法让其中的任何一个工作.
我在Python-DJango工作.
使用商务帐户,我设法使用Provisioning API添加它们,但我无法使用新的Directory API执行此操作.
问题是我要添加人员的群组不是商业群组,它是一个普通的googlegroups群:
group_name@googlegroups.com
根据我的发现,以及我为业务组所做的工作,我有以下代码:
groupClient = gdata.apps.groups.client.GroupsProvisioningClient(domain=domain)
groupClient.ClientLogin(email="user@gmail.com", password="xxx", source='apps')
groupClient.AddMemberToGroup("group_name@googlegroups.com", "newUser@gmail.com")
Run Code Online (Sandbox Code Playgroud)
我想知道我必须在域字段中添加什么.使用商业帐户它是业务域,但作为一个普通的googlegroups我不确定.我尝试过googlegroups.com并且无法正常工作,因为我总是收到无效的域错误.
任何帮助,将不胜感激
谢谢!
我想使用 Admin SDK 获取 Google 群组中的成员列表。
但我不知道如何做到这一点。我发现以下链接 - https://developers.google.com/admin-sdk/directory/v1/guides/manage-group-members
但我不知道如何在 Google 应用脚本中使用 POST 方法。
有人可以举个例子来指导我吗?
更新
我得到如下输出,但我想为组中的每个成员分别访问每个元素(角色、电子邮件)。那可能吗??
{
"role": "OWNER",
"kind": "admin#directory#member",
"type": "USER",
"etag": "\"fdo0/1gUrEe8bli75zvzmqFHyH3cPzlQ\"",
"id": "107108832717913338955",
"email": "useremailid@domain.com",
"status": "ACTIVE"
}
提前致谢。
我正在使用 Google 云端硬盘开发的应用程序遇到问题。
我有一个 Google 群组,里面有一些用户,我与这个群组共享一个集合。当我尝试使用 Google Drive API (files().list()) 查找此集合时,作为该组的用户之一,该集合正确显示。
但是,如果我将另一个用户添加到组中(使用 API 或 Google CPanel),并尝试使用 Google Drive API 作为该用户查找集合,则该集合不会显示,就好像用户无法看到一样即使他在一个允许查看该集合的组中。
如果我通过浏览器手动打开收藏集,则该收藏集将通过 Drive API 显示。
这是正常行为吗?在我的用例中,我不能期望用户在浏览器中打开与他们共享的每个集合,以便应用程序正常工作。
任何见解?