2017-08-24 159 views
-2

我希望我的用户能够在我的YouTube帐户下将视频上传到我的YouTube频道。因此,我并不真正需要或需要他们以自己身份验证(OAuth)。C#MVC使用v3 API而不使用OAuth将视频上传到YouTube?

我见过这里的例子:https://developers.google.com/youtube/v3/code_samples/dotnet

的所有代码的例子,我觉得好像使用OAuth和客户端秘密进行身份验证。任何人都可以向我指出一个很好的教程/示例,我可以将视频作为MYself(使用API​​密钥?)上传到MY频道?

谢谢。

UPDATE

嗯....我甚至不知道我做了什么是正确的....但这里是我做了什么:

赴证书为我的项目: https://console.developers.google.com/apis/credentials

创建2 OAuth credenials - 一个是Web应用程序,一个是其他。我下载了这些JSON并将它们添加到我的项目中,以便我可以测试每一个。

我启用了YouTube的数据API的位置: https://console.developers.google.com/apis/api/youtube.googleapis.com/overview

我基本上采取了净从这里上传例如: https://developers.google.com/youtube/v3/code_samples/dotnet

我还安装了NuGet包使用YouTube API V3

之前“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" 
     }; 
    } 
} 

所以我测试过它,并且上传然而最终“似乎”工作,:

  1. 的代码永远不会返回到搜索从等待videosInsertRequest.UploadAsync();并似乎挂....更新 - 修正。看到这里:https://www.codeproject.com/Questions/1087360/Youtube-data-API-for-uploading-videos-not-working

  2. 该视频从来没有真正出现在我的频道 - 我有一种感觉YouTube在它甚至上传之前禁止它? (这只是一个测试视频 - 没有什么险恶 - 这可能是为什么?)

  3. 我不知道如果我仍然这样做是正确的。

还有什么建议吗?我仍然很难相信任何人都没有一个我以后的工作的例子。我无法相信用户......将视频上传到我的网络服务器.....然后上传到我自己的频道非常困难!

+1

让用户将视频发送到您的Web应用程序,然后从那里使用oauth将其上传到您的帐户。 – Gusman

+0

OAuth是否会要求我手动进行身份验证?我不希望任何手动干预从我这边上传到YouTube ... –

+0

https://stackoverflow.com/questions/37006335/youtube-oauth-2-0-api-permanent-code-to-retrieve -tokens – Gusman

回答

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. 你建立一个云端控制台项目,OAuth用户端ID。
  2. 您允许您的应用程序将视频上​​传到您的频道。作为结果,您的应用程序将收到令牌(访问令牌和刷新令牌)。
  3. 您的应用程序的用户将其视频上传到您的应用程序服务器。
  4. 您的应用程序会将用户的视频(现在位于您的服务器上)和步骤2中的令牌上传到YouTube并使用这些令牌。
+0

好的,OAuth它是。我挣扎的部分是我不需要用户OAuth或用户的许可/同意。我只是想以自动的方式将他们的视频上传到我的频道.... –

+0

从我在链接中读到的内容中,我看到诸如“第3步:Google提示用户同意”之类的内容......我不想要这样的内容。 –

+0

那么,在这种情况下,您是需要同意的用户,因为您的应用程序想访问您的频道。您的应用程序的用户不必针对YouTube API进行授权。 – paolo

相关问题