Example #1
0
        private async Task <SharePointClient> EnsureClientCreated()
        {
            DiscoveryContext disco = GetFromCache("DiscoveryContext") as DiscoveryContext;

            if (disco == null)
            {
                disco = await DiscoveryContext.CreateAsync();

                SaveInCache("DiscoveryContext", disco);
            }

            var dcr = await disco.DiscoverCapabilityAsync(MyFilesCapability);

            var ServiceResourceId  = dcr.ServiceResourceId;
            var ServiceEndpointUri = dcr.ServiceEndpointUri;

            SaveInCache("LastLoggedInUser", dcr.UserId);

            return(new SharePointClient(ServiceEndpointUri, async() =>
            {
                Microsoft.IdentityModel.Clients.ActiveDirectory.ClientCredential creds =
                    new Microsoft.IdentityModel.Clients.ActiveDirectory.ClientCredential(
                        disco.AppIdentity.ClientId, disco.AppIdentity.ClientSecret);

                return (await disco.AuthenticationContext.AcquireTokenSilentAsync(
                            ServiceResourceId,
                            creds,
                            new UserIdentifier(dcr.UserId, UserIdentifierType.UniqueId))).AccessToken;
            }));
        }
Example #2
0
        /// <summary>
        /// Checks that a SharePoint client is available to the client.
        /// </summary>
        /// <returns>The SharePoint Online client.</returns>
        public static async Task<SharePointClient> EnsureSharePointClientCreatedAsync()
        {
            try
            {
                if (_discoveryContext == null)
                {
                    _discoveryContext = await DiscoveryContext.CreateAsync();
                }

                var dcr = await _discoveryContext.DiscoverCapabilityAsync("MyFiles");
                var serviceEndPointUri = dcr.ServiceEndpointUri;
                var serviceResourceId = dcr.ServiceResourceId;

                _loggedInUser = dcr.UserId;

                return new SharePointClient(serviceEndPointUri, async () =>
                {
                    return (await _discoveryContext.AuthenticationContext.AcquireTokenSilentAsync(serviceResourceId, _discoveryContext.AppIdentity.ClientId, new Microsoft.IdentityModel.Clients.ActiveDirectory.UserIdentifier(dcr.UserId, Microsoft.IdentityModel.Clients.ActiveDirectory.UserIdentifierType.UniqueId))).AccessToken;
                });

            }
            catch (AuthenticationFailedException ex)
            {
                string errorText = String.Format(
                    "{0}, code {1}.  EnsureSharePointClientCreatedAsync - failed",
                    ex.ErrorDescription,
                    ex.ErrorCode
                    );

                LoggingViewModel.Instance.Information = errorText;
            }

            return null;
        }
        private async Task <SharePointClient> EnsureClientCreated()
        {
            DiscoveryContext disco = GetFromCache("DiscoveryContext") as DiscoveryContext;

            if (disco == null)
            {
                disco = await DiscoveryContext.CreateAsync();

                SaveInCache("DiscoveryContext", disco);
            }

            var dcr = await disco.DiscoverCapabilityAsync("MyFiles");

            var ServiceResourceId  = dcr.ServiceResourceId;
            var ServiceEndpointUri = dcr.ServiceEndpointUri;

            SaveInCache("LastLoggedInUser", dcr.UserId);

            return(new SharePointClient(ServiceEndpointUri, async() =>
            {
                return (await disco.AuthenticationContext.AcquireTokenByRefreshTokenAsync(
                            new SessionCache().Read("RefreshToken"),
                            new Microsoft.IdentityModel.Clients.ActiveDirectory.ClientCredential(
                                disco.AppIdentity.ClientId,
                                disco.AppIdentity.ClientSecret),
                            ServiceResourceId)).AccessToken;
            }));
        }
        public static async Task <SharePointClient> EnsureClientCreated()
        {
            if (_discoveryContext == null)
            {
                _discoveryContext = await DiscoveryContext.CreateAsync();
            }

            var dcr = await _discoveryContext.DiscoverCapabilityAsync(MyFilesCapability);

            var ServiceResourceId  = dcr.ServiceResourceId;
            var ServiceEndpointUri = dcr.ServiceEndpointUri;

            _lastLoggedInUser = dcr.UserId;

            // Create the MyFiles client proxy:
            return(new SharePointClient(ServiceEndpointUri, async() =>
            {
                return (await _discoveryContext.AuthenticationContext.AcquireTokenByRefreshTokenAsync(new SessionCache().Read("RefreshToken"), new Microsoft.IdentityModel.Clients.ActiveDirectory.ClientCredential(_discoveryContext.AppIdentity.ClientId, _discoveryContext.AppIdentity.ClientSecret), ServiceResourceId)).AccessToken;
            }));
        }