Google API ile çalışmaktan çok memnunuz ancak e-posta ile bir kullanıcının yöneticisini bulmak için alan adlarına erişmemi gerektiren bir projem var. Kodu açmadan önce her şeyi ayarlamak istedim, böylece PHP için example file'u takip ettim. Çalışmayı başarabiliyordum ancak zaman dolduğunda jetonu yenilemekle ilgili bazı sorunlar vardı ve araştırma beni bir sunucu cron betiği olduğu için Service Account kullanmam için itti ve herhangi bir kullanıcı etkileşimi ile uğraşmak istemiyorum. Google API: 404 Etki Alanı bulunamadı
ben Servis Hesabı oluşturmuş, G Suite alan adı çapında Heyeti etkin ve erişimini ekledi:https://www.googleapis.com/auth/admin.directory.user.readonly
Senaryomun ile Google_Service_Exception
olsun.
yanıttır:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "Domain not found."
}
],
"code": 404,
"message": "Domain not found."
}
}
bu, bu, hesaplar etki alanını bilmiyor ama ben bu sorunu çözmek nasıl görmüyorum anlamına varsayıyorum. Bu bir izin sorunu olsaydı, Google'ın bana söyleyeceğini varsayardım. Çevrimiçi arama yapmayı denedim, ancak bulduğum sorunlar farklı bir yöntem kullanıyordu ve düzeltmeler Hizmet Hesabı'nda yapılabilecek bir şey değildi. Şu an takıldım, bu yüzden doğru yönde bir itmenin beni takip edeceğini umuyorum. Bu konuda herhangi bir yardım için
<?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());
}
}
Benim service_account.json
(besbelli temizlenmiş) içerir
{
"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"
}
Teşekkür:
Bu
kullanıyorum test komut dosyası olan.
bu iplik http://stackoverflow.com/questions/23767994/404-resource-not-found-domain-with-google-direcotry-api gösterilen şemaya bir kullanıcının nesneyi oluşturma deneyin. –
Tam olarak aynı durumda değil, bir kullanıcı ekliyor ama yine de istekte bulunmak için bir nesne kullanmaya çalıştım. Ruby'nin API'si biraz farklıydı, ben de aynı hataları yapmadığım için hala aynı hatayı veremedim, bu yüzden doğru bir şekilde yaptığımı farz ediyorum. Şu anda API kodlarını kendimden daha iyi kullanıp kullanamayacağımı anlayabiliyor muyum diye bakıyorum. Teşebbüs için teşekkürler – Jeremy