我的组织(波兰侦察兵协会)拥有自己的Google Apps域,每个侦察兵都具有一个电子邮件地址。
我们决定创建一个WWW应用程序,用户可以在其中进行授权,并设置自己的Google Apps帐户。为此,我们需要一种非互动式的互动式方式来创建Google Apps帐户。
要清楚:
可以使用不推荐使用的Google Data API来完成。另一种方法似乎是通过Google Admin目录API进行的,但是根据文档,需要实际的物理用户来使用Oauth2授权请求。
在示例中,提出了以下流程:
flow = OAuth2WebServerFlow(CLIENT_ID, CLIENT_SECRET, OAUTH_SCOPE, REDIRECT_URI)
authorize_url = flow.step1_get_authorize_url()
print 'Go to the following link in your browser: ' + authorize_url
code = raw_input('Enter verification code: ').strip()
credentials = flow.step2_exchange(code)
似乎我需要使用OAuth2方案,(我猜)这意味着某个拥有管理员权限的在世人员会授权每个请求,在我们的情况下,我们显然希望用户能够初始化帐户创建。
是否可以使用此(或任何其他)API?
@David的回答使我走上了正确的轨道,但是在使用服务帐户时遇到了一些问题。
我决定使用服务帐户和模拟API,请注意,这将为您的应用程序提供非常高的访问权限,并极大地提高了安全性!
无论如何,这是您需要做的:
按照本教程进行操作,但是在设置凭据时创建一个服务帐户
这是页面的相关内容:
(...),您可以通过执行以下操作在开发人员控制台中自行激活Admin SDK:
- 转到Google Developers Console。
- 选择一个项目,或创建一个新项目。
- 在左侧的边栏中,展开API和身份验证。接下来,单击API。在API列表中,确保Admin SDK的状态为“开”。
- 在左侧的边栏中,选择“凭据”。
- 无论哪种情况,您都将进入“凭据”页面,并可以从此处创建项目的凭据。
如果尚未执行此操作,请通过单击OAuth标题下的创建新的客户端ID来创建OAuth 2.0凭据。接下来,在相关表中查找应用程序的客户端ID和客户端密钥。您也可以从此页面创建和编辑重定向URI。
- 转到您的Google Apps域的管理控制台。
- 从控件列表中选择“安全性”。如果您没有看到“安全性”列表,请从页面底部的灰色栏中选择“更多控件”,然后从控件列表中选择“安全性”。
- 从选项列表中选择高级设置。
- 在“身份验证”部分中选择“管理第三方OAuth客户端访问”。
- 在客户名称字段中,输入服务帐户的客户ID。
- 在“一个或多个API范围”字段中,输入应授予您的应用程序访问范围的范围列表(请参见下图)。例如,如果您需要对Google Drive API和Google Calendar API进行域范围的访问,请输入:https : //www.googleapis.com/auth/drive,https : //www.googleapis.com/auth/calendar单击授权按钮。
请注意,您需要提供Client ID
未Email Address
在步骤5中。
请参阅此以获取范围列表。
安装google-api-python-client,PyCrypto和PyOpenSSL(您可以省略PyOpenSSL),但是随后您需要转换下载的证书。
with open('private/key-filename.p12', 'rb') as f:
private_key = f.read()
credentials = SignedJwtAssertionCredentials(
'[email protected]', # Email address [1]
private_key,
'https://www.googleapis.com/auth/admin.directory.user',
sub="[email protected]" # Impersonate user [2])
Email Address
个服务帐户(与客户ID不同)。现在,您应该拥有对您的API的读写帐户。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句