0

メンバーのイベントを作成できる Web サイトがあり、Google カレンダー 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;
        }
    }

今のところ、ビジュアルスタジオでウェブサイトをローカルで実行しています。私が行ったリクエストごとにポート番号が変わるため、ポート番号の設定が機能していないようです。

これらは、Googleで設定した設定です。

Google コンソールのドメイン設定。

解決策を探すために最後の 1 日半を費やしましたが、これまでのところ何も見つかりませんでした。

credentials.json をダウンロードし、ソリューションに追加しました。リソースやリンク、または私が見ることができるサンプルコードは大歓迎です。ドメインを正しくセットアップしたかどうか、またはローカルで実行中にセットアップできるかどうかさえわかりません。

4

1 に答える 1

0

Google API のバックエンド サービスから承認しようとしていると仮定する限り、少し前に同様の問題がありました。

採用したソリューション

そのためにGoogleサービスアカウントを使用しました。シンプルでエレガントな使い方です

ステップ - 1: Google サービス アカウントのセットアップ

このリンクに従って、Google 開発者コンソールを使用してサービス アカウントをセットアップします https://developers.google.com/android/management/service-account

ステップ - 2: Google アプリケーションをサービス アカウントのメール ID と共有する

この手順により、サービス アカウントに Google アプリケーション(カレンダー、Google ドキュメント、Google スプレッドシートなど) へのアクセス権が付与され ますカレンダーを他の emailId と共有する方法を示します)

ステップ - 3: これらのリンクに従って、サービス アカウントをアプリケーションに統合します

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

Google サービス アカウントの利点は、データを更新するために定期的にログインする必要がないことです。一度設定すれば、忘れることができます

私の答えが役立つことを願っています:)

于 2020-06-24T07:22:03.710 に答える