c# - 无法使用YouTube身份验证令牌生成文件

时间:2017-01-25 10:14:39

标签: google-api youtube-api google-api-dotnet-client youtube-data-api

我正在开发一个用于在YouTube上使用IIS服务器进行视频上传的asp.net应用程序。成功上传需要刷新令牌。以下代码显示了应该生成具有身份验证访问权限的新文件并在作为参数传递的文件路径中刷新令牌的方法:

private void SetRefreshToken(string refresh_token_path)
            {
               ClientSecrets secrets = new ClientSecrets()
                {
                    ClientId = this.clientId,
                    ClientSecret = this.clientSecret
                };

                UserCredential credentials;
                try
                {
                    // Approach 1
                    credentials = GoogleWebAuthorizationBroker.AuthorizeAsync(
                        secrets,
                        new[] 
                        { 
                            YouTubeService.Scope.YoutubeReadonly,
                            YouTubeService.Scope.YoutubeUpload,
                            YouTubeService.Scope.Youtube,
                            YouTubeService.Scope.YoutubeForceSsl,
                            YouTubeService.Scope.Youtubepartner,
                            YouTubeService.Scope.YoutubepartnerChannelAudit
                        },
                        "user",
                        CancellationToken.None,
                        new FileDataStore(refresh_token_path)
                        ).Result;

                    // Approach 2
                    //IAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow(
                    //    new GoogleAuthorizationCodeFlow.Initializer
                    //    {
                    //        ClientSecrets = secrets,
                    //        Scopes = new[] { 
                    //            YouTubeService.Scope.YoutubeReadonly,
                    //            YouTubeService.Scope.YoutubeUpload,
                    //            YouTubeService.Scope.Youtube,
                    //            YouTubeService.Scope.YoutubeForceSsl,
                    //            YouTubeService.Scope.Youtubepartner,
                    //            YouTubeService.Scope.YoutubepartnerChannelAudit 
                    //        },
                    //        DataStore = new FileDataStore(refresh_token_path, true)
                    //    });
                }
                catch (Exception ex)
                {
                    System.IO.File.WriteAllText(@"D:\error.txt", string.Format("{0}{1}{2}", ex.Message, Environment.NewLine, ex.StackTrace));
                }
              }

当我启动它时,如果我使用方法1 - 通过" GoogleWebAuthorizationBroker.AuthorizeAsync"方法,执行流程在方法中冻结。如果我使用方法2 - 通过" GoogleAuthorizationCodeFlow.Initializer"代码流继续而不会抛出任何异常,但实际上在指定的文件路径中没有创建文件" refresh_token_path"。 当我在测试控制台应用程序中启动此代码时,它在两种情况下都能正常工作。

请你预约一下这是什么原因,我该如何解决?

提前致谢!

0 个答案:

没有答案