2017-08-24 22 views
-2

私のユーザーがMY YouTubeアカウントでMY YouTubeチャンネルに動画をアップロードできるようにします。それゆえ、私は彼ら自身が認証する(OAuth)ことを本当に必要としたり、必要としたりしません。C#MVC OAuthなしでv3 APIを使用してYouTubeに動画をアップロードしますか?

私はここでの例を見てきました:https://developers.google.com/youtube/v3/code_samples/dotnet

すべて私は見つけるのコード例の認証にはOAuthとクライアントの秘密を使用しているようです。誰も私のチャンネルに自分で(APIキーを使って?)ビデオをアップロードすることができる良いチュートリアル/サンプルの方向に私を指すことができますか?

ありがとうございました。

UPDATE

まあ....私は私がやったことは権利である場合にもわからないんだけど....しかし、ここで私がやったことです:

は、資格情報に行ってきました私のプロジェクトでは: https://console.developers.google.com/apis/credentials

作成済み2 OAuthクレデンシャル - 1つはWebアプリケーション、もう1つはその他でした。私はJSONをダウンロードしてプロジェクトに追加したので、それぞれをテストすることができました。

私はここにYou​​Tubeのデータ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パッケージをインストールbefore "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(のawaitからバックビューに返すことはありません)。ちょうどハングアップしているようです....更新 - 修正されました。ここをクリックしてください:https://www.codeproject.com/Questions/1087360/Youtube-data-API-for-uploading-videos-not-working

  2. 動画は実際には自分のチャンネルには表示されません - アップロードされる前にYouTubeで禁止されていると感じていますか? (それはちょうどテストビデオです - 邪悪なことはありません - それはなぜですか?)

  3. 私はまだこの権利をしているかどうかはわかりません。

これ以上のアドバイスをお願いしますか?私はまだ誰も私が何をしているかの実例がないと信じるのに苦労します。ユーザーが....自分のWebサーバーにビデオをアップロードして.....自分のチャンネルにアップロードすることはとても難しいとは思えません!

+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という概念を覚えておくことをお勧めします。

EDIT:ワークフローを明確にする

  1. あなたはクラウドコンソールプロジェクトとのOAuthクライアントIDを設定します。
  2. アプリケーションに許可を与え、ビデオを自分のチャンネルにアップロードすることができます。その結果、アプリケーションはトークン(アクセストークンとリフレッシュトークン)を受け取ります。
  3. アプリケーションのユーザーは、自分のビデオをアプリケーションサーバーにアップロードします。
  4. アプリケーションは、ユーザーのビデオ(今はサーバー上にある)とステップ2のトークンを取得し、これらのトークンを使用してYouTubeにアップロードします。
+0

OK、OAuthです。私が苦労している部分は、ユーザーOAuthやユーザーの許可/同意を必要としないということです。私は自分のチャンネルに自分のビデオをアップロードしたいと思っています....自動化された方法で。 –

+0

あなたのリンクで読んだことから、「ステップ3:Googleがユーザーに同意を促す」のようなものが表示されます。これは嫌です。 –

+0

あなたのアプリケーションがあなたのチャンネルにアクセスしたいので、この場合、あなたは同意を得なければならないユーザーです。アプリケーションのユーザーはYouTube APIを承認する必要はありません。 – paolo