0

Youtube v3 API を ASP.NET 4.5/C# と組み合わせて使用​​し、コンソール アプリケーションを介して特定の youtube チャンネルに動画をアップロードしたいと考えています。コンパイルは、Windows 7 Professional Development マシン上の Visual Studio 2015 で行われます。

そのため、Google Developer Console 内で OAuth2 資格情報を作成し、OAuth2 認証ハンドシェイクに次のコードを使用します。

        using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
        {
            GoogleAuthorizationCodeFlow.Initializer initializer = new GoogleAuthorizationCodeFlow.Initializer
            {
                ClientSecrets = GoogleClientSecrets.Load(stream).Secrets,
                DataStore = new FileDataStore(GoogleWebAuthorizationBroker.Folder)
            };

            credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
                initializer,

                new[] { YouTubeService.Scope.Youtube },
                user,
                CancellationToken.None
            );
        }

これまでのところ、すべて正常に動作しています。以前に認証が行われなかった場合、ブラウザー ウィンドウが開き ( access_type=offline&response_type=code )、YouTube アカウントにログインし、チャンネルを選択し、必要なアクセス権を付与し、ブラウザー ページに戻りますlocalhost:portnumber/authorize?code= XYZに「 Received validation code. You may close this windows 」と書かれており、コンソール アプリケーションは動作を続けます。これは、開発マシンでの作業ワークフローです。

ただし、アプリケーションを Windows Server 2012 にコピーすると、エラーが発生します。ブラウザ ウィンドウも開き、ログインしてアクセス権を付与できますが、最終的なブラウザ ページlocalhost:portnumber/authorize?code=XYZは、ブラウザ固有の「接続に失敗しました」というエラー ページでロードできません。

受信したコード情報を読み取り、トークンを取得し、それを %AppData%/Google.Apis.Auth に書き込むプロセスが (ランダム?) ポート番号に関連付けられていないようです。ファイアウォールは何もブロックしません。

私たちの最初の推測は、名前解決の問題でした。デフォルトでは、localhost は Windows サーバー上で ::1 に解決されました。残念ながら、IPv4 解決を強制的に 127.0.0.1 にすると、まだ機能しません。

すべての提案に感謝します。

4

1 に答える 1