// The 'actual' method public SPOService InstantiateSPOService(Uri destinationUrl, string loginUrl, PSCredential credential, string tenantId, PromptBehavior?behavior) { var context = new CmdLetContext(destinationUrl.ToString(), null, null); if (credential == null) { OAuthSession session = string.IsNullOrEmpty(tenantId) ? new OAuthSession() : new OAuthSession(string.Format(nonCommon, tenantId)); if (_cid == null) { session.SignIn(loginUrl, behavior.Value); } else { session.SignIn(loginUrl, behavior.Value, _cid.ToString(), _rduri.ToString()); } context.OAuthSession = session; } else { var spCreds = new SharePointOnlineCredentials(credential.UserName, credential.Password); context.Credentials = spCreds; } return(new SPOService(context)); }