【发布时间】:2018-02-02 01:22:27
【问题描述】:
我希望我的用户能够将视频上传到我的 YouTube 帐户下的我的 YouTube 频道。因此,我真的不希望或不需要他们以自己的身份进行身份验证 (OAuth)。
我在这里看到了示例:https://developers.google.com/youtube/v3/code_samples/dotnet
我发现的所有代码示例似乎都使用 OAuth 和客户端密码进行身份验证。任何人都可以指出一个很好的教程/示例的方向,我可以将视频上传到我的频道作为我自己(使用 API 密钥?)?
谢谢。
更新
嗯....我什至不确定我所做的是否正确....但这是我所做的:
进入我的项目的凭据: https://console.developers.google.com/apis/credentials
创建了 2 个 OAuth 凭证 - 一个是 Web 应用程序,一个是其他。我为这些下载了 JSON 并将它们添加到我的项目中,以便我可以测试每一个。
我在这里启用了 YouTube 数据 API: https://console.developers.google.com/apis/api/youtube.googleapis.com/overview
我主要从这里获取 .Net 上传示例: https://developers.google.com/youtube/v3/code_samples/dotnet
我还为 YouTube API v3 安装了 Nuget 包
在“var youtubeService =...”之前我添加了这个:
// This bit checks if the token is out of date,
// and refreshes the access token using the refresh token.
if (credential.Token.IsExpired(SystemClock.Default))
{
if (!await credential.RefreshTokenAsync(CancellationToken.None))
{
Console.WriteLine("No valid refresh token.");
}
}
还创建了以下类 - 再次,我从另一个 StackOverflow 帖子中获得它 - 目的是创建离线访问令牌??
public class OfflineAccessGoogleAuthorizationCodeFlow : GoogleAuthorizationCodeFlow
{
public OfflineAccessGoogleAuthorizationCodeFlow(GoogleAuthorizationCodeFlow.Initializer initializer) : base(initializer) { }
public override AuthorizationCodeRequestUrl CreateAuthorizationCodeRequest(string redirectUri)
{
return new GoogleAuthorizationCodeRequestUrl(new Uri(AuthorizationServerUrl))
{
ClientId = ClientSecrets.ClientId,
Scope = string.Join(" ", Scopes),
RedirectUri = redirectUri,
AccessType = "offline",
ApprovalPrompt = "force"
};
}
}
所以我已经对其进行了测试,但是上传最终“似乎”可以正常工作:
代码永远不会从 await videosInsertRequest.UploadAsync() 返回到视图;并且似乎挂起....更新 - 已修复。见这里:https://www.codeproject.com/Questions/1087360/Youtube-data-API-for-uploading-videos-not-working
该视频实际上从未出现在我的频道中 - 我感觉 YouTube 甚至在它上传之前就禁止了它? (这只是一个测试视频 - 没什么险恶的 - 这可能是为什么?)
- 我不知道我是否还在做这件事。
还有什么建议吗?我仍然很难相信没有人有我所追求的工作示例。我不敢相信一个用户......上传视频到我的网络服务器......然后上传到我自己的频道是如此困难!
【问题讨论】:
-
让用户将视频发送到您的网络应用程序,然后从那里使用 oauth 将其上传到您的帐户。
-
OAuth 是否需要我手动进行身份验证?我不希望我的任何手动干预将其上传到 YouTube....
-
我不确定该链接有何帮助?我已经创建了一个 API 密钥和一个 OAuth ID。我真的想将我的用户上传的视频上传到我自己的频道 - 因此我不明白为什么我需要使用 OAuth 而不是 API 密钥?没有使用 API 密钥的示例吗?
-
我从这里获得了一段不错的代码:stackoverflow.com/a/27691403/4181058 但我认为获取长期刷新密钥的方法已经改变。 “已安装的应用程序”似乎不再存在....
标签: c# .net asp.net-mvc-5 youtube-api youtube-data-api