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()"; }