Google APIを初めて使用していますが、メールでユーザーのマネージャーを探すためにドメインにアクセスする必要があるプロジェクトがあります。コードを開始する前に、すべてを設定したかったので、私はPHPのためにexample fileに従っていました。私はそれを動作させることができましたが、期限切れになるとトークンをリフレッシュする際にいくつかの問題がありました。Service Accountを使用するように研究が促されました。これはサーバーのcronスクリプトであり、ユーザーのやりとりを扱いたくありません。Google API:404ドメインが見つかりません
私はサービスアカウントを作成したが、Gスイートドメイン全体の委任を有効にし、ためにアクセスを追加しました:私は私のスクリプトでGoogle_Service_Exception
を取得https://www.googleapis.com/auth/admin.directory.user.readonly
。
応答は次のとおりです。
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "Domain not found."
}
],
"code": 404,
"message": "Domain not found."
}
}
私は、これはそれがアカウントドメインを知らないが、私は、私はこれを解決する方法を見ていないことを意味と仮定しています。私は、これが権限の問題であれば、Googleが教えてくれると思います。私はオンラインで検索しようとしましたが、見つけた問題は別の方法を使用していたため、修正はサービスアカウントで実行できませんでした。私は今すぐ立ち往生しているので、正しい方向へのプッシュが私を軌道に乗せることを願っています。
これは私が使用していたテストスクリプトです:
<?php
require_once(__DIR__. '/vendor/autoload.php');
define('CREDENTIALS_PATH', '/path/to/service_account.json');
define('SCOPES', implode(' ', array(
Google_Service_Directory::ADMIN_DIRECTORY_USER_READONLY)
));
date_default_timezone_set('America/New_York');
/**
* Returns an authorized API client.
* @return Google_Client the authorized client object
*/
function getClient() {
$client = new Google_Client();
$client->setApplicationName('TestingApp');
$client->setAuthConfig(CREDENTIALS_PATH);
$client->setScopes(SCOPES);
return $client;
}
// Get the API client and construct the service object.
$client = getClient();
$service = new Google_Service_Directory($client);
// Print the first 10 users in the domain.
$optParams = array(
'customer' => 'my_customer',
'maxResults' => 10,
'orderBy' => 'email',
);
$results = $service->users->listUsers($optParams);
if (count($results->getUsers()) == 0) {
print "No users found.\n";
} else {
print "Users:\n";
foreach ($results->getUsers() as $user) {
printf("%s (%s)\n", $user->getPrimaryEmail(),
$user->getName()->getFullName());
}
}
私service_account.json
は、(明らか洗浄)この上の任意の支援のための
{
"type": "service_account",
"project_id": "PROJECT_ID",
"private_key_id": "PRIVATE_KEY_ID",
"private_key": "PRIVATE_KEY",
"client_email": "SERVICE_ACCOUNT_EMAIL.iam.gserviceaccount.com",
"client_id": "CLIENT_ID",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_IDENTIFIER.iam.gserviceaccount.com"
}
感謝が含まれています。
このスレッドに示すように、ユーザーオブジェクトをスキーマに作成してみてください。http://stackoverflow.com/questions/23767994/404-resource-not-found-domain-with-google-direcotry-api –
彼はユーザーを追加していますが、まったく同じケースではありませんが、依然としてオブジェクトを使用してリクエストを作成しようとしました。 RubyのAPIはちょっと違うので、私は同じメソッドを持っていなかったので、私は同じエラーが返ってきたので、正しく処理したと仮定します。私は現在、自分自身のAPIコードを使って、自分のドキュメントよりも使い方を理解できるかどうかを確認しています。試してくれてありがとう – Jeremy