[Résolu] création d'un carnet d'adresses et partage

Bonjour,

Dans le cadre d’un carnet d’adresses global (public), nous souhaitons créer, via un script, ce carnet d’adresses puis donner l’accès en lecture à tous les utilisateurs (abonnement fait pour eux). Nous buttons sur le code ci-dessous; le 1er extrait de code permet de créer le carnet et des contacts pour un utilisateur donné. Le second ajoute les contacts. Le troisième est sensé permettre l’abonnement aux autres utilisateurs. Dans les faits, le carnet est créé, les contacts y sont associés, le carnet est visible par les autres utilisateurs, par contre ils ne voient pas son contenu.
Quelle logique suivre pour rendre les contacts visibles?

Merci d’avance.

Code de création d’un carnet :

// création d'un objet folder
Folder folder = new Folder();
folder.setName(name);
folder.setReadable(true);
folder.setSyncable(true);
folder.setManageable(false);
folder.setWritable(false);
folder.setDefault(false);
//folder.setSynced(true);
folder.setOwner(userToken.getUserId());

try
{
    Folder responseFolder = bClient.createFolder(userToken, folder);
   
    System.out.println("Creation du carnet numéro "+responseFolder.getId());
   
    bClient.setFolderSync(userToken, folder, true);
    // on retourne le carnet créé
    return responseFolder;
   
} catch (Exception e) {
    e.printStackTrace();
}

Extrait du code qui ajoute les contacts

//on récupère la liste des contacts
            ArrayList<Contact> contacts = getContacts();
           
            for (Contact contact : contacts)
            {
                contact.setFolderId(folder.getId());
                try {
                    bClient.createWithoutDuplicate(userToken, contact);
                } catch (Exception e) {
                    e.printStackTrace();
                }
               System.out.println("Ajout du contact "+ contact.getDisplayName());          
            }

Code d’abonnement des utilisateurs :

//on récupère la liste de tous les utilisateurs
UserClient userClient = connexion.getUserClient();
UserQuery uq = new UserQuery();

ResultList<User> users = null;

try {
    users = userClient.find(userToken, uq);
} catch (Exception e1) {
    e1.printStackTrace();
}

//si on a des users
if(users !=null)
{
    java.util.List<Integer> listusers = new ArrayList<Integer>();
   
    //on construit une liste avec leur ID
    for (User user : users)
    {
        listusers.add(user.getId());
    }
   
    try
    {
        bClient.subscribreMassUserFromAFolder(userToken, folder.getId(), listusers);
        System.out.println("Abonnement des utilisateurs");
    } catch (Exception e) {
        e.printStackTrace();
    }
   
}



Vous abonnez les utilisateurs à un carnet d’adresses sur lequels ils n’ont pas de droit à priori.

Il faut donner le droit de lecture public au minimum sur le carnet d’adresse:

Right right = new Right(1, 1, 0, 0);
setConsumerRights(token, "user",
			null, "addressbook", folder.getId(), right);

avant d’abonner les utilisateurs au carnet d’adresses.

Merci pour votre réponse. C’est ce qu’il nous manquait.