node.js googleapisライブラリとサービスアカウントを使用してユーザーのリストを取得しようとしています。users.listは403エラーを返します:このリソース/ apiにアクセスするには承認されていません
「Google Appsドメイン全体の権限委任を実行する」には、this guideが続きました。 JavaとPythonには例がありますが、残念ながらnode.jsではそうではありません。
私はquickstartに従ってみて最初の2つのステップを完了しましたが、サービスアカウントではなく手動のOAuthフローを使用しました。
サービスアカウントを使用して承認するには、例hereに従ってみました。それはすべて、私はエラーを取得し、私がリクエストを送信するまで動作するようです:コードでError: Not Authorized to access this resource/api
:403
は、ここに私のコードです:
var google = require('googleapis'),
GoogleAuth = require('google-auth-library'),
authFactory = new GoogleAuth(),
admin = google.admin('directory_v1')
authFactory.getApplicationDefault(function (err, authClient) {
console.log('GOT APPLICATION DEFAULT', authClient)
if (err) {
console.log('Authentication failed because of ', err);
return;
}
if (authClient.createScopedRequired && authClient.createScopedRequired()) {
console.log('SCOPE REQUIRED')
var scopes = ['https://www.googleapis.com/auth/admin.directory.user'];
authClient = authClient.createScoped(scopes);
}
var request = {
auth: authClient,
domain: 'mydomain.com'
};
console.log('request:', request)
admin.users.list(request, function (err, result) {
if (err) {
console.log('admin.users.list error', err);
} else {
console.log(result);
}
});
});
私がしてください見逃していますか?
サービスアカウントでユーザーリストを取得できましたが、アクセストークンを取得するためには常にOAuthプロセスを使用する必要があると思います。トークンが正しく機能するには、サービスアカウント(管理コンソール、セキュリティセクション)のスコープを許可する、特定の種類の管理者アカウントは、読み取りユーザーにアクセスできる「サブ」です。 – Rob