我正在尝试通过https://www.googleapis.com/auth/admin.directory.user插入用户帐户。我使用以下gem 'google-api-client', '0.11.1'
。
我启用了以下功能, 1,启用api访问 2,服务帐户域范围授权完成 3,授权此服务帐户客户端ID的范围URL
代码适用于其他域,但对于其他帐户,它会抛出错误。
{
"error": "unauthorized_client",
"error_description": "Client is unauthorized to retrieve access tokens using this method."
}
代码:
SCOPES = ['https://www.googleapis.com/auth/admin.directory.user'
, 'https://www.googleapis.com/auth/admin.directory.group.readonly']
ENV['GOOGLE_APPLICATION_CREDENTIALS'] = 'expa-email-c2938bce41f9.json'
service = Google::Apis::AdminDirectoryV1::DirectoryService.new
authorization = Google::Auth.get_application_default(SCOPES)
authorization.sub = user_email
authorization.fetch_access_token!
service.authorization = authorization
service
答案 0 :(得分:0)
基于此thread,服务帐户是虚拟用户。要使服务帐户能够访问您的帐户,需要预先授权。您可以像对待任何其他用户一样授权服务帐户。您可以查看此sample code。
补充参考:
Client is unauthorized to retrieve access tokens using this method Gmail API C#
服务帐户需要获得授权,或者无法访问域的电子邮件。
"客户未经授权使用此方法检索访问令牌"
表示您未经授权正确检查Delegating domain-wide authority to the service account