我正在尝试弄清楚如何对Admin Directory API进行身份验证。我的目标是能够创建新的GSuite用户。
我已按照本指南https://github.com/jay0lee/GAM/wiki/CreatingClientSecretsFile设置了域范围委派的客户端/ ID密钥和服务帐户。
我可以成功获得一个持有者令牌,但是当我尝试向端点发出请求时,我得到了403.我希望我应该对此端点进行身份验证,因为我可以使用GAM成功获取所有数据相同的凭据。
require 'googleauth'
require 'google/apis/admin_directory_v1'
scope = ["https://www.googleapis.com/auth/admin.directory.user.readonly", "https://www.googleapis.com/auth/admin.directory.user"]
authorizer = Google::Auth::ServiceAccountCredentials.make_creds(
json_key_io: File.open('service_account.json'),
scope: scope)
pload = authorizer.fetch_access_token!
token = pload["access_token"]
url = "https://www.googleapis.com/admin/directory/v1/users/my@email.com"
uri = URI.parse(url)
request = Net::HTTP::Get.new(uri)
request.content_type = "application/json"
request["Authorization"] = "Bearer #{token}"
req_options = {
use_ssl: uri.scheme == "https",
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end
p response #=> <Net::HTTPForbidden 403 Forbidden readbody=true>
答案 0 :(得分:0)
修正了服务帐户的范围,一切正常。