googleWebAuthorizationBroker.AuthorizeAsync永远挂起

弗拉多·潘兹奇

我尝试使用youtube api v3和.NET将视频上传到youtube,但是由于调用AuthorizeAsync而永久挂起。您也可以在以下位置查看代码:https//developers.google.com/youtube/v3/code_samples/dotnet

  static void Main(string[] args)
     {
  Console.WriteLine("YouTube Data API: Upload Video");
  Console.WriteLine("==============================");

  try
  {
    new UploadVideo().Run().Wait();
  }
  catch (AggregateException ex)
  {
    foreach (var e in ex.InnerExceptions)
    {
      Console.WriteLine("Error: " + e.Message);
    }
  }

  Console.WriteLine("Press any key to continue...");
  Console.ReadKey();
}

private async Task Run()
{
  UserCredential credential;
  using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
  {
    credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
        GoogleClientSecrets.Load(stream).Secrets,
        // This OAuth 2.0 access scope allows an application to upload files to the
        // authenticated user's YouTube channel, but doesn't allow other types of access.
        new[] { YouTubeService.Scope.YoutubeUpload },
        "user",
        CancellationToken.None
    );
  }

  var youtubeService = new YouTubeService(new BaseClientService.Initializer()
  {
    HttpClientInitializer = credential,
    ApplicationName = Assembly.GetExecutingAssembly().GetName().Name
  });
弗拉多·潘兹奇

我找到了解决方案。代码不起作用,因为应用程序托管在IIS上。IIS访问%appdata%文件夹中的文件夹可能存在问题。令牌文件默认情况下保存在%appdata%文件夹中。我尝试更改对该文件夹的权限。我添加了Everyone,DefaultAppPool,I_USER,...,但是没有成功。还有新版本的Google.Apis(1.8.2)允许完整路径(new FileDataStore(fullPath,true))true表示完整路径,但即使在此处也存在错误。使用该构造函数是不可能的,因为我总是会出错。因此,我决定我的应用程序应使用IIS Express(实际上,我在内部创建了带有授权代码的新项目)。转到解决方案属性,然后使用IIS Express设置您的应用程序。

https://console.developers.google.com获取cliendId(json文件)(选择Web应用程序),并将http:// localhost:48372(或您的应用程序端口使用的任何端口)设置为javascript来源,并将http:// localhost:48372 / authorize.aspx设置为重定向URL。您还应该在互联网上找到如何使您的端口保持静态)。保存您的clientId文件。(您可能已经做过这一步)当您使用IIS Express时,AuthorizeAsync方法应该没有问题。系统将提示您输入凭据,然后选择您的YouTube帐户(如果您已经登录,请选择帐户)。当您授予您的应用程序许可后,您将被重定向到authorize.aspx。您的授权aspx页面应使用提供的“客户秘密”属性和DataStore属性创建新的IAuthorization流对象。使用code = Request.Params [“ code”]从URL读取代码,并创建UserCredential对象。youtubeService的HttpClientInitializer属性的类型为UserCredential。您应该使用的方法类似于var usercredential = flow.SomeMethodWhichReceives(“ user”,code,CancelletionToken.None)。之后,将在您指定的FileDataStore文件夹内生成包含刷新令牌的文件。有了刷新令牌后,您就可以做任何您想做的事情,因为刷新令牌应该永远存在(除非被手动撤销)。有一种方法可以从refreshtoken获取用户凭据,例如flow.getAccessTokenfromRefreshToken(“ user”,“ your_refresh_token_string”)这样,当您拥有刷新令牌并使用last方法时,您将可以访问google youtube api。您还会有其他用户使用此方法将其上传到您的youtube帐户的可能性。

google youtube api中的某些方法需要OAUTH2身份验证(从客户端密钥获取刷新令牌->从刷新令牌获取访问令牌...),例如,上传视频,但某些诸如getvideos则不需要。您可以将API密钥(而不是UserCredential)提供给youtubeService建设者

编辑:还有一个我忘了提到的收获(对于那些以为这就是全部的人)。当您授予您的应用访问Google api的权限(在将您重定向到authorize.aspx之前)时,您会收到错误redirect_url不匹配的错误,因为url参数中的某处redirect_url与ClientId中提供的重定向URL不匹配json,(端口由于某些原因而有所不同)。更改此参数,使其与您在clientId json中提供的重定向URL匹配。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

GoogleWebAuthorizationBroker.AuthorizeAsync挂起

来自分类Dev

发布到IIS7.0时的GoogleWebAuthorizationBroker.AuthorizeAsync超时

来自分类Dev

Xbox One C#上的Google登录问题-GoogleWebAuthorizationBroker.AuthorizeAsync

来自分类Dev

ASP.NET MVC5 Google API GoogleWebAuthorizationBroker.AuthorizeAsync在本地工作,但未部署到IIS

来自分类Dev

wxThread :: Delete永远挂起

来自分类Dev

SSH永远挂起?

来自分类Dev

Ruby脚本永远挂起

来自分类Dev

烧瓶请求永远挂起

来自分类Dev

OData永远以Xamarin形式挂起

来自分类Dev

MVC中的GoogleWebAuthorizationBroker用于Google云端硬盘访问

来自分类Dev

Python的信号量永远挂起

来自分类Dev

正则表达式永远挂起

来自分类Dev

driver.close()将永远挂起

来自分类Dev

启动 mongod 服务的 Ansible 任务永远挂起

来自分类Dev

如何将“ &[email protected]”附加到GoogleWebAuthorizationBroker

来自分类Dev

每次GoogleWebAuthorizationBroker中的新FileDataStore都会产生一个新端口

来自分类Dev

递归haskell函数在交互式会话中永远挂起

来自分类Dev

带有phantomjs的量角器永远挂起

来自分类Dev

JPA Eclipse“从实体生成表”永远挂起

来自分类Dev

Kafka Consumer会先阅读直到开始,然后永远挂起

来自分类Dev

从子进程调用时,Python程序将永远挂起

来自分类Dev

了解异步已经运行了永远循环和挂起的任务

来自分类Dev

带有phantomjs的量角器永远挂起

来自分类Dev

使用 Java databeans 连接到 Siebel 永远挂起

来自分类Dev

Azure Dev Ops react-scripts 测试永远挂起

来自分类Dev

将消息发送到ManagedProcess时,Cloud Haskell永远挂起

来自分类Dev

在等待响应时,从android应用程序调用Azure Web API会永远挂起

来自分类Dev

没有O_NONBLOCK标志,在OS X上打开串行端口将永远挂起

来自分类Dev

blazor应用程序中的异步调用永远挂起且永不出错

Related 相关文章

  1. 1

    GoogleWebAuthorizationBroker.AuthorizeAsync挂起

  2. 2

    发布到IIS7.0时的GoogleWebAuthorizationBroker.AuthorizeAsync超时

  3. 3

    Xbox One C#上的Google登录问题-GoogleWebAuthorizationBroker.AuthorizeAsync

  4. 4

    ASP.NET MVC5 Google API GoogleWebAuthorizationBroker.AuthorizeAsync在本地工作,但未部署到IIS

  5. 5

    wxThread :: Delete永远挂起

  6. 6

    SSH永远挂起?

  7. 7

    Ruby脚本永远挂起

  8. 8

    烧瓶请求永远挂起

  9. 9

    OData永远以Xamarin形式挂起

  10. 10

    MVC中的GoogleWebAuthorizationBroker用于Google云端硬盘访问

  11. 11

    Python的信号量永远挂起

  12. 12

    正则表达式永远挂起

  13. 13

    driver.close()将永远挂起

  14. 14

    启动 mongod 服务的 Ansible 任务永远挂起

  15. 15

    如何将“ &[email protected]”附加到GoogleWebAuthorizationBroker

  16. 16

    每次GoogleWebAuthorizationBroker中的新FileDataStore都会产生一个新端口

  17. 17

    递归haskell函数在交互式会话中永远挂起

  18. 18

    带有phantomjs的量角器永远挂起

  19. 19

    JPA Eclipse“从实体生成表”永远挂起

  20. 20

    Kafka Consumer会先阅读直到开始,然后永远挂起

  21. 21

    从子进程调用时,Python程序将永远挂起

  22. 22

    了解异步已经运行了永远循环和挂起的任务

  23. 23

    带有phantomjs的量角器永远挂起

  24. 24

    使用 Java databeans 连接到 Siebel 永远挂起

  25. 25

    Azure Dev Ops react-scripts 测试永远挂起

  26. 26

    将消息发送到ManagedProcess时,Cloud Haskell永远挂起

  27. 27

    在等待响应时,从android应用程序调用Azure Web API会永远挂起

  28. 28

    没有O_NONBLOCK标志,在OS X上打开串行端口将永远挂起

  29. 29

    blazor应用程序中的异步调用永远挂起且永不出错

热门标签

归档