如何访问谷歌日历的客户端机密文件

用户7575848

我想访问谷歌日历的 client_secret 文件并使用它在我的日历中添加一个事件。

我正在 C# 中创建一个聊天机器人,并且在我使用计算机路径的那一刻(当我尝试在我的 pc 中访问我的项目的 client_secret 文件时)工作正常。

当我在网络上发布项目并尝试访问该文件时,我无法访问。

我的代码是:

 string path =  @"C:\Project\Test\Bot\V3\client_secret.json";

 string pathi = @"{
 'installed': {
'client_id': '1111111- 
  21432423.apps.googleusercontent.com',
'project_id': '111',
'auth_uri': 'https://accounts.google.com/o/oauth2/auth',
'token_uri': 'https://www.googleapis.com/oauth2/v3/token',
'auth_provider_x509_cert_url': 'https://www.googleapis.com/oauth2/v1/certs',
'client_secret': '22222222222222',
'redirect_uris': [ 'urn:ietf:wg:oauth:2.0:oob', 'http:dev.ai.com/BotTest/' ]
      }
  }";


            UserCredential credential;
            string[] Scopes = { CalendarService.Scope.Calendar };
            string credPath = System.Environment.GetFolderPath(
               System.Environment.SpecialFolder.Personal);

            using (var stream =
           new FileStream(pathi, FileMode.Open, FileAccess.Read))
                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
               GoogleClientSecrets.Load(stream).Secrets,
               Scopes,
               "user",
               CancellationToken.None,
               new FileDataStore(credPath, true)).Result;
            string ApplicationName = "Google Calendar API .NET Quickstart";

            var service = new CalendarService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = ApplicationName,
            });


            Event newEvent = new Event()
            {

                Summary = "Event",
                Location = "",
                Description = "Event is scheduled for:  " + 
        eventi.Date.ToString("dd-MM-yyyy") + "  " + 
       eventi.Time.ToShortTimeString(),
                Start = new EventDateTime()
                {

                    // DateTime = eventi.Date,
                    DateTime = new DateTime(eventi.Date.Year, 
         eventi.Date.Month, eventi.Date.Day, eventi.Time.Hour, 
            eventi.Time.Minute, 0),
                    TimeZone = "Europe/Brussels",


                },
                End = new EventDateTime()
                {

                    DateTime = eventi.Date.AddMinutes(60),
                    // DateTime = new DateTime(eventi.Date.Year, 
                 eventi.Date.Month, eventi.Date.Day, eventi.Time.Hour, 
                        eventi.Time.Hour +1 ,0),
                    TimeZone = "Europe/Brussels",
                },
                Recurrence = new String[] { "RRULE:FREQ=DAILY;COUNT=1" },
                Attendees = new EventAttendee[] {
                new EventAttendee() { Email = "[email protected]" },

            },

                ///////////////////////////////////////////



                ///////////////////////////////////////////

                Reminders = new Event.RemindersData()
                {
                    UseDefault = false,
                    Overrides = new EventReminder[] {
                    new EventReminder() { Method = "email", Minutes = 1 * 60 },
                    new EventReminder() { Method = "sms", Minutes = 10 },
                }
                }
            };
            String calendarId = "primary";
            EventsResource.InsertRequest request1 = 
          service.Events.Insert(newEvent, calendarId);
            Event createdEvent = request1.Execute();
            Console.WriteLine("Event created: {0}", createdEvent.HtmlLink);

            // Define parameters of request.
            EventsResource.ListRequest request = service.Events.List("primary");
            request.TimeMin = eventi.Time;
            request.ShowDeleted = false;
            request.SingleEvents = true;
            request.MaxResults = 10;
            request.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime;


            // List events.
            Events events = request.Execute();
            Console.WriteLine("Upcoming events:");
            if (events.Items != null && events.Items.Count > 0)
            {
                foreach (var eventItem in events.Items)
                {
                    string when = eventItem.Start.Date;
                    if (String.IsNullOrEmpty(when))
                    {
                        when = eventItem.Start.Date;
                    }
                    Console.WriteLine("{0} ({1})", eventItem.Summary, when);
                }
            }
            else
            {
                Console.WriteLine("No upcoming events found.");
            }
            //Console.Read();
            //   context.Wait(this.MessageReceived);
        }
        context.Wait(this.MessageReceived);
    }

当我使用路径时,在这部分代码中,我将路径工作:

    using (var stream =
           new FileStream(path, FileMode.Open, FileAccess.Read))
                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
               GoogleClientSecrets.Load(stream).Secrets,
               Scopes,
               "user",
               CancellationToken.None,
               new FileDataStore(credPath, true)).Result;

当我将文件的根放在网络中时不起作用,当我将文件的所有脚本放在字符串路径中时也是如此:

string path = @"http://dev.aaaa.com/bot/client_secret.json"

我尝试只输入名称文件,但仍然不起作用:

 using (var stream =
           new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
               GoogleClientSecrets.Load(stream).Secrets,
               Scopes,
               "user",
               CancellationToken.None,
               new FileDataStore(credPath, true)).Result;

你能帮我看看如何访问这个文件吗?

拉维查德拉维迪亚

将credentials.json 复制到bin\debug 和bin\release 文件夹,如果您的客户端是控制台应用程序,请按照这种方式,

UserCredential credential;
            string credPath = System.Environment.GetFolderPath(
               System.Environment.SpecialFolder.Personal);

            using (var stream = new FileStream("credentials.json", FileMode.Open, FileAccess.Read))
            {
                credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                   new[] { CalendarService.Scope.CalendarReadonly },
                    "user", CancellationToken.None, new FileDataStore(credPath));
            }

对于 Web 应用程序,client_secret.json 将如下所示并包含重定向 uri 等。

{"web":{"client_id":" ","project_id":" ","auth_uri":" ","token_uri":" ","auth_provider_x509_cert_url":" ","client_secret":" ","redirect_uris":[]}}

也不要透露您的任何身份和秘密。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否可以使用 Google Apps Script 项目的客户端机密文件从 Google 检索 OAuth2 访问令牌?

来自分类Dev

使用客户端机密 Azure 请求访问令牌

来自分类Dev

如何访问客户端计算机上的文件

来自分类Dev

如何将oAuth 2.0客户端机密保密?

来自分类Dev

如何将oAuth 2.0客户端机密保密?

来自分类Dev

如果您从不发送客户端机密以获得访问令牌,那么仅本地客户端Facebook登录如何安全?

来自分类Dev

如何设计与机密文件管理相关的域模型?

来自分类Dev

如何设计与机密文件管理相关的域模型?

来自分类Dev

如何指定openshift原始机密文件的最终权限?

来自分类Dev

如何在远程节点上使用机密文件

来自分类Dev

安全存储客户端机密

来自分类Dev

Azure App客户端机密

来自分类Dev

如何在客户端使用“refreshToken”刷新谷歌“accessToken”

来自分类Dev

如何使用asp.net访问服务器端的客户端文件

来自分类Dev

给定APP机密和客户端ID检索Facebook用户访问令牌

来自分类Dev

客户端机密+在Spring OAuth2中刷新访问令牌

来自分类Dev

Thinktecture Identity Server 3:用于保护WEB API免受未授权访问的客户端机密

来自分类Dev

Azure 返回具有无效客户端机密的有效访问令牌

来自分类Dev

客户端如何分割文件?

来自分类Dev

如何通过Yaml将机密文件设置为kubernetes机密?

来自分类Dev

如何获取Azure用户的客户端机密信息(无需注册应用程序)或如何生成当前Azure凭据的承载访问令牌?

来自分类Dev

在Spring Security OAuth中,如何将passwordEncoder用于客户端机密?

来自分类Dev

Google API:如何发现现有API密钥的客户端机密?

来自分类Dev

如何从现有的Azure服务主体获取客户端机密

来自分类Dev

如何以编程方式更新Azure B2C OpenId Connect的客户端机密?

来自分类Dev

如何以编程方式在客户端中添加ssh主机密钥?

来自分类Dev

如何列出SSH客户端可用的主机密钥算法?

来自分类Dev

servlet写入客户端期间访问(.mdb)文件损坏

来自分类Dev

访问客户端js文件中的handlebars变量

Related 相关文章

  1. 1

    是否可以使用 Google Apps Script 项目的客户端机密文件从 Google 检索 OAuth2 访问令牌?

  2. 2

    使用客户端机密 Azure 请求访问令牌

  3. 3

    如何访问客户端计算机上的文件

  4. 4

    如何将oAuth 2.0客户端机密保密?

  5. 5

    如何将oAuth 2.0客户端机密保密?

  6. 6

    如果您从不发送客户端机密以获得访问令牌,那么仅本地客户端Facebook登录如何安全?

  7. 7

    如何设计与机密文件管理相关的域模型?

  8. 8

    如何设计与机密文件管理相关的域模型?

  9. 9

    如何指定openshift原始机密文件的最终权限?

  10. 10

    如何在远程节点上使用机密文件

  11. 11

    安全存储客户端机密

  12. 12

    Azure App客户端机密

  13. 13

    如何在客户端使用“refreshToken”刷新谷歌“accessToken”

  14. 14

    如何使用asp.net访问服务器端的客户端文件

  15. 15

    给定APP机密和客户端ID检索Facebook用户访问令牌

  16. 16

    客户端机密+在Spring OAuth2中刷新访问令牌

  17. 17

    Thinktecture Identity Server 3:用于保护WEB API免受未授权访问的客户端机密

  18. 18

    Azure 返回具有无效客户端机密的有效访问令牌

  19. 19

    客户端如何分割文件?

  20. 20

    如何通过Yaml将机密文件设置为kubernetes机密?

  21. 21

    如何获取Azure用户的客户端机密信息(无需注册应用程序)或如何生成当前Azure凭据的承载访问令牌?

  22. 22

    在Spring Security OAuth中,如何将passwordEncoder用于客户端机密?

  23. 23

    Google API:如何发现现有API密钥的客户端机密?

  24. 24

    如何从现有的Azure服务主体获取客户端机密

  25. 25

    如何以编程方式更新Azure B2C OpenId Connect的客户端机密?

  26. 26

    如何以编程方式在客户端中添加ssh主机密钥?

  27. 27

    如何列出SSH客户端可用的主机密钥算法?

  28. 28

    servlet写入客户端期间访问(.mdb)文件损坏

  29. 29

    访问客户端js文件中的handlebars变量

热门标签

归档