I found some time for further study, so I have the minimal working example, as I requested several days ago:
.....
if (QString::compare(service.displayName(), "Owncloud", Qt::CaseInsensitive)) {
// Initialize SignOn
QPointer<SignOn::AuthSession> authSession;
SignOn::IdentityInfo identityInfo;
identityInfo.setId(ad.credentialsId());
SignOn::Identity * identity = SignOn::Identity::newIdentity(identityInfo);
authSession = identity->createSession(ad.method());
SignOn::SessionData sessionData(ad.parameters());
// connect response and error signals
connect(authSession, SIGNAL(response(SignOn::SessionData)), SLOT(signOnResponse(SignOn::SessionData)));
connect(authSession, SIGNAL(error(SignOn::Error)), SLOT(signOnError(SignOn::Error)));
// request secret and wait for response signal
authSession->request(sessionData, ad.method());
}
.....
/**
* @brief Accounts reponse
*
*/
void OwncloudSyncd::signOnResponse(const SignOn::SessionData &sessionData) {
qDebug() << "Online Accounts response()";
qDebug() << " -> login: " << sessionData.UserName();
qDebug() << " -> password: " << sessionData.Secret();
}
/**
* @brief Accounts reponse
*
*/
void OwncloudSyncd::signOnError(const SignOn::Error &error) {
qDebug() << "Online Accounts response()";
}