我正在使用版本0.6.4的google-api-client ruby gem来查询Google管理目录API。
这是我在ruby控制台中的会话:
require 'rubygems'
require 'google/api_client'
SERVICE_ACCOUNT_CLIENT_ID = "SOME_STRING.apps.googleusercontent.com"
SERVICE_ACCOUNT_EMAIL = "SOME_STRING@developer.gserviceaccount.com"
SERVICE_ACCOUNT_PKCS12_FILE_PATH = "/path/to/privatekey.p12"
key = Google::APIClient::KeyUtils.load_from_pkcs12(SERVICE_ACCOUNT_PKCS12_FILE_PATH, 'notasecret')
asserter = Google::APIClient::JWTAsserter.new(SERVICE_ACCOUNT_EMAIL, "https://www.googleapis.com/auth/admin.directory.device.chromeos.readonly", key)
client = Google::APIClient.new
client.authorization = asserter.authorize
dir_api = client.discovered_api('admin', 'directory_v1')
resp = client.execute(:api_method => dir_api.chromeosdevices.list, :parameters => {'customerId'=>SERVICE_ACCOUNT_CLIENT_ID})
resp.body
=> "{\n \"error\": {\n \"errors\": [\n {\n \"domain\": \"global\",\n \"reason\": \"badRequest\",\n \"message\": \"Bad Request\"\n }\n ],\n \"code\": 400,\n \"message\": \"Bad Request\"\n }\n}\n"
我可能在这里遗漏了一些明显的东西但是从错误响应中不清楚请求中缺少什么。非常感谢任何正确方向的帮助/指示。
感谢。
答案 0 :(得分:1)
我在C#程序中得到了类似的回复,列出了我域中的用户。
我仍然没有解决它,但到目前为止我设法得到相同的错误消息 API Explorer https://developers.google.com/apis-explorer/#p/admin/directory_v1/ 当尝试在那里做同样的请求并省略域的任何值。
这让我相信我不知何故需要在我的C#代码中将域添加到我的请求中,并通过反复试验我 THINK 我发现如何在C#中执行此操作。
但我的建议是在API资源管理器中尝试你的API请求然后如果你可以通过不提交域的值来获得相同的错误消息,因为我认为这是错误消息的含义。
答案 1 :(得分:0)
我遇到了同样的问题。我写了一个示例gist,解释了如何设置它:
https://gist.github.com/thomaswitt/7468182
步骤是:
答案 2 :(得分:0)
我发现@JoBe's answer步入正轨。在Ruby中,使用Google-Api-Client
宝石时,您需要使用list_users
将哈希传递给domain
。即
UserService.list_users(domain: 'mydomain.com')
。