Пример #1
0
        public dynamic GetData(string code)
        {
            Guard.AgainstNullOrEmptyString(code, nameof(code));

            var credentials = _oauthConfigurationProvider.Get("orcid");

            var tokenRequest = new RestRequest(credentials.GetTokenUrl($"oauth/token"))
            {
                Method        = Method.POST,
                RequestFormat = DataFormat.Json,
            };

            tokenRequest.AddHeader("content-type", "application/x-www-form-urlencoded");
            tokenRequest.AddParameter("application/x-www-form-urlencoded", $"client_id={credentials.ClientId}&client_secret={credentials.ClientSecret}&grant_type=authorization_code&code={code}", ParameterType.RequestBody);

            var tokenResponse = _client.Execute(tokenRequest).AsDynamic();

            if (tokenResponse == null || tokenResponse.orcid == null)
            {
                return(null);
            }

            var userRequest = new RestRequest(credentials.GetDataUrl($"{tokenResponse.orcid.ToString()}/email"));

            userRequest.AddHeader("Accept", "application/vnd.orcid+json");
            userRequest.AddHeader("Authorization", $"Bearer {tokenResponse.access_token}");

            return(_client.Execute(userRequest).AsDynamic());
        }
Пример #2
0
        public dynamic GetData(string code)
        {
            Guard.AgainstNullOrEmptyString(code, nameof(code));

            var configuration = _oauthConfigurationProvider.Get("github");

            var tokenRequest = new RestRequest(configuration.TokenUrl)
            {
                Method        = Method.POST,
                RequestFormat = DataFormat.Json,
            };

            tokenRequest.AddHeader("content-type", "application/json");
            tokenRequest.AddJsonBody(new
            {
                client_id     = configuration.ClientId,
                client_secret = configuration.ClientSecret,
                code
            });

            var tokenResponse = _client.Execute(tokenRequest).AsDynamic();

            var userRequest = new RestRequest(configuration.DataUrl);

            userRequest.AddHeader("Authorization", $"token {tokenResponse.access_token}");

            return(_client.Execute(userRequest).AsDynamic());
        }