0

我有一个网站,我可以在其中为成员创建活动,并且我正在尝试连接到谷歌日历 API,所以当我创建新活动时,我可以将其同步到日历。

我已遵循本指南:https ://developers.google.com/calendar/quickstart/dotnet 但是当我到达运行示例代码的部分时,必须通过 OAuth 进行身份验证。我得到以下信息: redirect_uri_mismatch 图片

我的代码:

public class InitializeGoogleCalendarApiHelper : IInjected
    {
        public InitializeGoogleCalendarApiHelper(ILogger logger)
        {
            this.logger = logger;
        }

        // If modifying these scopes, delete your previously saved credentials
        // at ~/.credentials/calendar-dotnet-quickstart.json
        static string[] Scopes = { CalendarService.Scope.CalendarReadonly };
        static string ApplicationName = "Nordmanni Google Calendar API";
        private readonly ILogger logger;

        public CalendarService Initialize()
        {
            UserCredential credential;

            using (var stream =
                new FileStream("C:/Projects/Nordmanni/Nordmanni.App/credentials.json", FileMode.Open, FileAccess.Read))
            {
                // The file token.json stores the user's access and refresh tokens, and is created
                // automatically when the authorization flow completes for the first time.
                string credPath = "C:/Projects/Nordmanni/Nordmanni.App/GoogleApiToken.json";
                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    Scopes,
                    "user",
                    CancellationToken.None,
                    new FileDataStore(credPath, true)).Result;
                logger.Info<InitializeGoogleCalendarApiHelper>($"Credential file saved to: {credPath}");
            }

            // Create Google Calendar API service.
            var service = new CalendarService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = ApplicationName,
            });
            return service;
        }
    }

我现在在本地运行网站,在视觉工作室。我所做的每个请求的端口号都会更改,因此设置端口号似乎不起作用。

这些是我在谷歌设置的设置。

谷歌控制台域设置。

我花了最后一天半的时间寻找解决方案,但到目前为止一直找不到任何东西。

我已经下载了 credentials.json 并添加到了解决方案中。欢迎任何资源或链接,或者我可以查看的示例代码。我不确定我是否正确设置了域,或者是否可以在本地运行时进行设置。

4

1 回答 1

0

不久前我们遇到了类似的问题,据我假设您正在尝试从您的后端服务授权 google API

我们采用的解决方案

我们为此使用了谷歌服务帐户。使用简单优雅

步骤 - 1:设置谷歌服务帐户

按照此链接使用谷歌开发者控制台设置服务帐户 https://developers.google.com/android/management/service-account

步骤 - 2:与服务帐户电子邮件 ID 共享您的谷歌应用程序

此步骤使您的服务帐户可以访问 google 应用程序,可以是日历、google 文档或 google 表格,类似于与其他用户共享文档 https://support.google.com/calendar/answer/37082?hl=en(此链接显示如何与其他 emailId 共享您的日历)

第 3 步:按照这些链接将服务帐户与您的应用程序集成

https://developers.google.com/identity/protocols/oauth2/service-account https://cloud.google.com/docs/authentication/production

谷歌服务帐号的优点是您不必定期登录来更新数据。设置一次,您就可以忘记它

希望我的回答有帮助:)

于 2020-06-24T07:22:03.710 回答