四.二、控制台

博客主要围绕App获取数据展开,涉及控制台问题,需保证其不自动退出。还提到继续获取token请求API,以软件A为例,说明通过应用程序A的用户名和密码获取token,后台请求后才能拿到应用程序A的数据,同时涉及客户端身份标识与访问权限。
一、控制台(控制台问题,保证控制台不自动退出就行)

解决方案

        static void Main(string[] args)
        {
            Console.WriteLine("确定三个项目都已经启动");
            Console.Read();
            Console.WriteLine("按任意键开始运行");
            Task.Run(async () =>
            {
                // discover endpoints from metadata
                var client = new HttpClient();
                var disco = await client.GetDiscoveryDocumentAsync("http://localhost:5000");
                if (disco.IsError)
                {
                    Console.WriteLine(disco.Error);
                    return;
                }

            });
            Console.ReadLine();
            Console.ReadKey(false);//因为控制台会关闭,设置不关闭     
        }

 

二、查看调试的

 

换种方式执行

        static void Main(string[] args)
        {
            Console.WriteLine("确定三个项目都已经启动");
            Console.Read();
            Console.WriteLine("按任意键开始运行");
            // discover endpoints from metadata
            var client = new HttpClient();
            var disco = client.GetDiscoveryDocumentAsync("http://localhost:5000").ConfigureAwait(false).GetAwaiter().GetResult();
            if (disco.IsError)
            {
                Console.WriteLine(disco.Error);
                return;
            }
            Console.ReadKey(false);//因为控制台会关闭,设置不关闭     
        }

 

继续获取token请求api

        static void Main(string[] args)
        {
            Console.WriteLine("确定三个项目都已经启动");
            Console.Read();
            Console.WriteLine("按任意键开始运行");
            // discover endpoints from metadata
            var client = new HttpClient();
            var disco = client.GetDiscoveryDocumentAsync("http://localhost:5000").ConfigureAwait(false).GetAwaiter().GetResult();
            if (disco.IsError)
            {
                Console.WriteLine(disco.Error);
                return;
            }
            // request token
            var tokenResponse = client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
            {
                Address = disco.TokenEndpoint,

                ClientId = "socialnetwork",
                ClientSecret = "secret",
                Scope = "socialnetwork"
            }).ConfigureAwait(false).GetAwaiter().GetResult();
            // call api
            client.SetBearerToken(tokenResponse.AccessToken);
            var response = client.GetAsync("http://localhost:5001/identity").ConfigureAwait(false).GetAwaiter().GetResult();
            if (!response.IsSuccessStatusCode)
            {
                Console.WriteLine(response.StatusCode);
            }
            else
            {
                var content =  response.Content.ReadAsStringAsync().ConfigureAwait(false).GetAwaiter().GetResult();
                Console.WriteLine(JArray.Parse(content));
            }
            Console.ReadKey(false);//因为控制台会关闭,设置不关闭     
        }

 

说明和使用场景(场景为-某个App获取数据比如软件Aajax 请求后台数据,它是直接后台请求(应用程序A的用户名和密码获取token)才可以拿到应用程序A的数据)

 客户端==应用程序的身份标识-》是否可以访问

 

转载于:https://www.cnblogs.com/fger/p/11044548.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值