2

Google Apps ドメインのユーザーが次回のログイン時にパスワードを変更するよう強制する小さなスクリプトがあります。Zend Framework 1.11.13 を使用していますが、1.12.0 でも同じ結果が得られます。

クライアント オブジェクトで updateUser を呼び出すと常に未定義のメソッド エラーが返されるため、Google ドキュメント ( https://developers.google.com/google-apps/provisioning/#updating_a_user_account ) でユーザーを更新する例は、古くなっているか正しくないようです。

これが私のコードです:

<?php
set_include_path(implode(PATH_SEPARATOR, array(
    "/var/www/workspace/extlib/zend-framework/library/",
    get_include_path(),
)));
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_Gapps');

$client = Zend_Gdata_ClientLogin::getHttpClient("removed", "removed", Zend_Gdata_Gapps::AUTH_SERVICE_NAME);
$gdata = new Zend_Gdata_Gapps($client, 'domain.com');
$userEntry = $gdata->retrieveUser("a.username");
$userEntry->getLogin()->setChangePasswordAtNextLogin(true);
$gdata->updateUser("a.username", $userEntry);

そして、私が得るエラーは次のとおりです。

PHP Fatal error:  Uncaught exception 'Zend_Gdata_App_HttpException' with message 'Expected response code 200, got 500
Internal Error' in /var/www/workspace/extlib/zend-framework/library/Zend/Gdata/App.php:718
Stack trace:
#0 /var/www/workspace/extlib/zend-framework/library/Zend/Gdata.php(219): Zend_Gdata_App->performHttpRequest('PUT', 'https://apps-ap...', Array, '<atom:entry xml...', 'application/ato...', NULL)
#1 /var/www/workspace/extlib/zend-framework/library/Zend/Gdata/App.php(934): Zend_Gdata->performHttpRequest('PUT', 'https://apps-ap...', Array, '<atom:entry xml...', 'application/ato...')
#2 /var/www/workspace/extlib/zend-framework/library/Zend/Gdata/Gapps.php(272): Zend_Gdata_App->put(Object(Zend_Gdata_Gapps_UserEntry), 'https://apps-ap...', NULL, NULL, Array)
#3 /var/www/workspace/extlib/zend-framework/library/Zend/Gdata/App.php(1025): Zend_Gdata_Gapps->put(Object(Zend_Gdata_Gapps_UserEntry), 'https://apps-ap...', NULL, NULL, Array)
#4 /var/www/workspace/extlib/zend-framework/library/Zend/Gdata/Gapps.php(1005): Zend_ in /var/www/workspace/extlib/zend-framework/library/Zend/Gdata/App.php on line 718

あちこちにデバッグ コードを追加しましたが、ユーザーは間違いなく問題なく読み込まれるため、最初の要求が正常に機能するため、アクセス許可エラーやネットワーク エラーではないようです。updateUser を呼び出そうとすると、エラーが発生します。

どんな助けでも本当に感謝します!

4

2 に答える 2

1

問題は実際にはアクセス許可に基づいていることがわかりました。

パスワードの変更を管理するために作成したユーザーには、パスワードをリセットする権限がありましたが、管理者権限しかないため、スーパー管理者権限を持つユーザーのパスワードをリセットできませんでした。

ここでは、より適切なエラー メッセージが必要ではないでしょうか。

于 2012-11-26T12:32:04.203 に答える
1

エラーの説明にFiddlerを使用すると、エラーに関する詳細な説明が得られます。

于 2012-11-22T13:06:52.220 に答える