2

我按照快速入门并尝试使用 google-api-ruby-client 创建用户。

我已经在 google api 控制台中设置了访问权限。我可以使用 API 资源管理器让它工作。

但是当我尝试使用 ruby​​ 客户端时,我得到一个资源未找到:域错误。

这是代码:

def self.create_user

# Initialize the client.
client = Google::APIClient.new(
  :application_name => 'MYAPP',
  :application_version => '0.0.1'
)

# Authorization
# Load our credentials for the service account
key = Google::APIClient::KeyUtils.load_from_pkcs12(KEY_FILE, KEY_SECRET)

client.authorization = Signet::OAuth2::Client.new(
  token_credential_uri: 'https://accounts.google.com/o/oauth2/token',
  audience: 'https://accounts.google.com/o/oauth2/token',
  scope: 'https://www.googleapis.com/auth/admin.directory.user',
  issuer: ACCOUNT_ID,
  signing_key: key)

# Request a token for our service account
client.authorization.fetch_access_token!

# Load API Methods
admin = client.discovered_api('admin', 'directory_v1')

# Make an API call.
result = client.execute(
   admin.users.update,
    name: { familyName: 'testy', givenName: 'testerson' },
     password: '!password12345!',
     primaryEmail: 'ttesterson@my-actual-domain.com'
)

result.data

结尾

这是回应:

"error"=>{"errors"=>[{"domain"=>"global", "reason"=>"notFound", "message"=>"Resource Not Found: domain"}], "code"=>404, "message"=>"Resource Not Found: domain"}

为什么?

4

1 回答 1

1

在阅读了一些文档之后,我需要修复两件事。

  1. 我没有为我的测试服务帐户设置正确的授权。

您必须转到Apps Console > Security > Advanced > Manage API client access并为您的服务帐户添加客户端 URL 以及您要添加的任何特定权限

  1. 正如在这个问题中看到的,您似乎需要创建一个用户对象,而不仅仅是传入参数。

这是我更新的代码:

# Authorization happens here ....

api = client.discovered_api('admin', 'directory_v1')
new_user = api.users.insert.request_schema.new(
    name: { familyName: 'Testy', givenName: 'Testerson' },
    primaryEmail: 'ttttesterson@<domain-redacted>.com',
    password: 'password123'
 )

  result = client.execute(
    api_method: api.users.insert,
    body_object: new_user
 )
于 2014-06-05T18:37:21.733 回答