As you know, tags are stored in the /etc paths in your JCR. When you logged out of publisher as an admin, the resolver would NOT be able to access the tags object in /etc. Hence, it is returning nulls.
To solve this, you can create a new OSGI service like below:
public Class TagServiceImpl implements TagService {
ResourceResolverFactory resolverFactory;
public void init() {
Map<String, Object> params = new HashMap<>();
params.put(ResourceResolverFactory.SUBSERVICE, "companyServiceThread");
ResourceResolver resourceResolver = resourceResolverFactory.getServiceResourceResolver(params);
}
public void kill() {
resolver = null;
}
public Tag getTag(String tagID) {
Tag myTag = resourceResolver.adaptTo(TagManager.class).resolve(tagID); //Now works!!
return myTag;
}
This service-user has been given the appropriate read/write privileges to required paths. Hence, the tag (myTag) can be successfully resolved.