J'essaie de récupérer une liste d'utilisateurs utilisant la bibliothèque node.js googleapis et un compte de service.users.list renvoie 403 Erreur: Non Autorisé à accéder à cette ressource/API
J'ai suivi this guide pour 'Effectuer la délégation d'autorité de domaine Google Apps à l'échelle du domaine'. Il y a des exemples pour Java et Python, mais malheureusement pas pour node.js, ce qui semble fonctionner différemment.
J'ai essayé de suivre le quickstart et j'ai terminé les deux premières étapes, mais il utilise ensuite un flux OAuth manuel au lieu d'un compte de service.
J'ai donc essayé de suivre l'exemple here pour autoriser l'utilisation d'un compte de service. Que tout semble fonctionner jusqu'à ce que j'envoie la demande, je reçois une erreur: Error: Not Authorized to access this resource/api
avec le code: 403.
Voici mon code:
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);
}
});
});
Qu'ai-je manqué s'il vous plaît?
J'ai été en mesure d'obtenir une liste d'utilisateurs avec un compte de service, mais je pense que vous devez toujours utiliser un processus OAuth pour obtenir un jeton d'accès. Il y a beaucoup de configuration sur Google qui doit se faire correctement avant que votre jeton ne fonctionne correctement, y compris mais sans s'y limiter: autoriser l'étendue dans votre compte de service (dans la console d'administration, section Sécurité), utiliser une sorte de Compte administrateur en tant que "sous" qui a accès aux utilisateurs en lecture. – Rob