当前位置: 首页 > 知识库问答 >
问题:

使用Google API和scope youtube.upload在web上上传Youtube视频

阮才俊
2023-03-14

我正在尝试上传在MVC开发的Youtube上的视频,但它失败了,Web应用程序有以下错误,而它对本地系统工作正常。托管在 AWS 上的服务器。

无法启动带有“”的浏览器https://accounts.google.com/o/oauth2/v2/auth?access_type=offline

寻求帮助

共有1个答案

简意
2023-03-14

我将假设您正在使用Google APIs。net客户端库。Google登录Web客户端和本地应用程序客户端有几种类型。

用于验证两个应用程序的代码不同。当您使用本地客户端进行身份验证时,您会在本地pc上生成web浏览器。对于网站上托管的web应用程序,浏览器必须在用户客户端计算机上打开。

您在这里看到的错误通常是因为您正在托管它并且它试图在服务器本身而不是用户界面上打开Web浏览器。您应该遵循本教程web-apps ations-aspnet-mvc

添加您自己的FlowMetadata实现。

using System;
using System.Web.Mvc;

using Google.Apis.Auth.OAuth2;
using Google.Apis.Auth.OAuth2.Flows;
using Google.Apis.Auth.OAuth2.Mvc;
using Google.Apis.Drive.v2;
using Google.Apis.Util.Store;

namespace Google.Apis.Sample.MVC4
{
    public class AppFlowMetadata : FlowMetadata
    {
        private static readonly IAuthorizationCodeFlow flow =
            new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
                {
                    ClientSecrets = new ClientSecrets
                    {
                        ClientId = "PUT_CLIENT_ID_HERE",
                        ClientSecret = "PUT_CLIENT_SECRET_HERE"
                    },
                    Scopes = new[] { DriveService.Scope.Drive },
                    DataStore = new FileDataStore("Drive.Api.Auth.Store")
                });

        public override string GetUserId(Controller controller)
        {
            // In this sample we use the session to store the user identifiers.
            // That's not the best practice, because you should have a logic to identify
            // a user. You might want to use "OpenID Connect".
            // You can read more about the protocol in the following link:
            // https://developers.google.com/accounts/docs/OAuth2Login.
            var user = controller.Session["user"];
            if (user == null)
            {
                user = Guid.NewGuid();
                controller.Session["user"] = user;
            }
            return user.ToString();

        }

        public override IAuthorizationCodeFlow Flow
        {
            get { return flow; }
        }
    }
}

FlowMetadata是一个抽象类,包含您自己的逻辑,用于检索用户标识符和您正在使用的IAuthorizationCodeFlow。

在上面的示例代码中,使用正确的作用域、客户机机密和数据存储创建了一个新的GoogleAuthorizationCodeFlow。考虑添加您自己的IDataStore实现,例如,您可以编写一个使用EntityFramework的实现。

实现你自己的使用Google API服务的控制器。以下示例使用了DriveService:

using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Mvc;

using Google.Apis.Auth.OAuth2.Mvc;
using Google.Apis.Drive.v2;
using Google.Apis.Services;

using Google.Apis.Sample.MVC4;

namespace Google.Apis.Sample.MVC4.Controllers
{
    public class HomeController : Controller
    {
        public async Task IndexAsync(CancellationToken cancellationToken)
        {
            var result = await new AuthorizationCodeMvcApp(this, new AppFlowMetadata()).
                AuthorizeAsync(cancellationToken);

            if (result.Credential != null)
            {
                var service = new DriveService(new BaseClientService.Initializer
                    {
                        HttpClientInitializer = result.Credential,
                        ApplicationName = "ASP.NET MVC Sample"
                    });

                // YOUR CODE SHOULD BE HERE..
                // SAMPLE CODE:
                var list = await service.Files.List().ExecuteAsync();
                ViewBag.Message = "FILE COUNT IS: " + list.Items.Count();
                return View();
            }
            else
            {
                return new RedirectResult(result.RedirectUri);
            }
        }
    }
}

实现你自己的回调控制器。实现应该是这样的:

using Google.Apis.Sample.MVC4;

namespace Google.Apis.Sample.MVC4.Controllers
{
    public class AuthCallbackController : Google.Apis.Auth.OAuth2.Mvc.Controllers.AuthCallbackController
    {
        protected override Google.Apis.Auth.OAuth2.Mvc.FlowMetadata FlowData
        {
            get { return new AppFlowMetadata(); }
        }
    }
}

您需要将示例从google drive更改为Youtube。

 类似资料:
  • 我正试图用PHP上传一个视频到Youtube。我用的是Youtube API v3,我用的是最新的谷歌API PHP客户端库的源代码。< br >我使用< br > https://code.google.com/p/google-api-php-client/上给出的示例代码来执行身份验证。身份验证顺利通过,但当我尝试上传视频时,我得到< code > Google _ service exce

  • 我正在使用YouTube数据应用编程接口(Python客户端库)将视频上传到YouTube。是否可以从应用编程接口为该视频设置变现,而不是进入我在YouTube网站上的帐户并手动为上传的视频设置变现?如果是,那么我如何从应用编程接口做到这一点?我无法在应用编程接口留档中找到它,谷歌搜索也没有帮助。

  • 我正在通过共享按钮将视频上传到youtube。如果我点击上传按钮,它会显示社交图标,比如whatsapp、facebook、youtube。当我点击youtube时,它应该被上传到youtube。 下面是我的代码: 选择视频后,我可以选择youtube图标。然后,您的Tube窗口会自动关闭。任何建议都是非常可观的。谢谢!

  • 我正在尝试通过Youtube数据API上传视频,但我总是收到错误。 我发现了https://developers.google.com/youtube/v3/docs/errors?hl=en,可能意味着用户拥有谷歌账户,但没有YouTube频道。 这就是我的情况,我的谷歌账户没有Youtube频道,但我是另一个YouTube频道(橙色图标)的管理员,当我登录youtube.com时,我甚至可以看

  • 但是,当我尝试解析此信息时,结果与预期不符: > 有没有关于我可能做错了什么以及如何纠正的想法? 谢谢

  • 问题内容: 如何使用PHP检查YouTube上是否存在视频? 问题答案: 怎么样 使用Youtube的API ? 毕竟,这意味着要使用一些官方文件,而与解析某些HTML页面相比,更改的可能性较小。 该检索特定的视频条目似乎很有趣:如果你发送到像这样的一个URL的请求: (用示例的视频ID替换“ videoID”,当然,在您的示例中为“ GeppLPQtihA”) ,如果视频有效,您将获得一些ATO