我希望我的用户能够在MY YouTube帐户下将视频上传到我的YouTube频道。因此,我并不想或不需要他们自己验证(OAuth)。
我在这里看过这些例子:https://developers.google.com/youtube/v3/code_samples/dotnet
我发现的所有代码示例似乎都使用OAuth和客户端机密进行身份验证。任何人都可以指向一个很好的教程/样本的方向,我可以将视频作为MYself上传到MY Channel(使用API密钥吗?)?
感谢。
更新
嗯......我甚至不确定我所做的事情是否正确......但这就是我所做的:
去我的项目的凭证: https://console.developers.google.com/apis/credentials
创建了2个OAuth credenials - 一个是Web Application,另一个是Other。我为这些下载了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包
我添加了这个:// 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"
};
}
}
所以我已经对它进行了测试,然而上传最终“似乎”仍然有效:
代码永远不会返回View等待videosInsertRequest.UploadAsync();而且似乎挂了....更新 - 修正。见这里:https://www.codeproject.com/Questions/1087360/Youtube-data-API-for-uploading-videos-not-working
视频从未真正出现在我的频道中 - 我有一种感觉YouTube甚至在它上传之前就禁止它了吗? (这只是一个测试视频 - 没有什么险恶的 - 这可能是为什么?)
还有什么建议吗?我仍然很难相信没有人能够像我所追求的那样。我无法相信用户......将视频上传到我的网络服务器.....然后上传到我自己的频道是如此困难!!
答案 0 :(得分:0)
首先关闭:无法使用API密钥上传视频。
从技术角度来看,API密钥不是绑定到特定的YouTube频道,而是绑定到Google Cloud Console项目。这意味着即使YouTube允许API密钥作为上传视频的身份验证,他们也不知道要上传哪个频道。
对于所有写入操作(例如上传视频),都需要proper authentication via OAuth 2.0。因此,没有教程显示如何使用API密钥上传。
正如@Gusman所说,您需要让您的用户上传到您的服务器,然后您的服务器使用OAuth凭据上传到YouTube。
关于“'已安装的应用程序'似乎不再存在......”:
您在代码中使用API密钥和OAuth客户端ID /秘密的方式保持完全相同。 Google刚刚更改了您在云端控制台中创建和限制密钥访问权限的方式。
我鼓励您熟悉server-side apps that use the YouTube API的概念。
编辑:澄清工作流程
答案 1 :(得分:0)
您必须使用oAuth,但您要跳过的是用户身份验证步骤。 见this SO answer here
您需要获取刷新令牌并将其与OAuth密钥和密钥一起存储在您的代码中。
至于你的“禁播”视频。如果视频上传为“不公开”,则在您导航至Creator Studio -> Videos列表
之前,该视频不会显示