3

我試圖使用Youtube.Data.Api v3從我的.Net應用程序直播。 我已經設置了OAuth並下載了.JSON文件,並且工作正常。我知道,因爲我已經成功地獲得了一個頻道列表。在我的帳戶中的視頻,即,下面的代碼工作:Youtube Live API - 使用OAuth拒絕播放的廣播

var channelsRequest = ytService.Channels.List("contentDetails, snippet"); 
channelsRequest.Mine = true; 
var channelsListResponse = channelsRequest.Execute(); 

但是,如果我嘗試執行插入請求(針對完整性我告訴你整個方法),

public static LiveBroadcast CreateImmediateBroadcast(string title = "DefaultBroadcast") { 
    var snippet = new LiveBroadcastSnippet(); 
    snippet.Title = title; 
    snippet.ScheduledStartTime = DateTime.Now; 
    snippet.ScheduledEndTime = DateTime.Now + TimeSpan.FromMinutes(60); 

    var status = new LiveBroadcastStatus(); 
    status.PrivacyStatus = "unlisted"; 

    var broadcast = new LiveBroadcast(); 
    broadcast.Kind = "youtube#liveBroadcast"; 
    broadcast.Snippet = snippet; 
    broadcast.Status = status; 

    var insertBroadcastRequest = ytService.LiveBroadcasts.Insert(broadcast, "snippet, status"); 
    insertBroadcastRequest.Execute(); 
    return broadcast; 
} 

我得到一個異常時打電話insertBroadcastRequest.Execute(),即:

Google.GoogleApiException了未處理

的HResult = -2146233088 消息= Google.Apis.Requests.RequestError

權限不足[403] 錯誤[ 消息[權限不足]地址[ - ]原因[insufficientPermissions]域[全球] ] 的ServiceName = YouTube的

源= Google.Apis

堆棧跟蹤: 在Google.Apis.Requests.ClientServiceRequest`1.Execute()在C:\用戶\ cloudsharp \文件\ GitHub的\ Google處理API-DOTNET客戶端\ SRC \支持\ GoogleApis \ Apis \ Requests \ ClientServiceRequest.cs:第96行 在YoutubeConsole.YouTubeAPI.CreateImmediateStream(字符串名稱)在C:\用戶\ bussg \源\工作區\ OwnExperimental \ YoutubeConsole \ YoutubeConsole \ YouTubeAPI.cs:線87 在YoutubeConsole.YouTubeAPI.Test()在 ...

而且,完整性,這裏是我的授權,

using (var stream = new FileStream(Directory.GetCurrentDirectory() + @"\GoogleAuthOtherApplication.json", FileMode.Open, FileAccess.Read)) { 
    credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
     GoogleClientSecrets.Load(stream).Secrets, 
     new[] { YouTubeService.Scope.YoutubeForceSsl}, 
     "user", 
     CancellationToken.None, 
     new FileDataStore("YouTubeAPI") 
    ).Result; 
} 

此外,對於YouTubeService.Scope我已經嘗試了所有的選項。根據documentationinsert方法應與ForceSsl一起使用。

而且this documentation page賽斯

注:通道必須經過批准使用YouTube Live功能,使頻道所有者串流直播內容到該通道。如果您代表經過身份驗證的用戶發送API請求,而該用戶的頻道未啓用或有資格傳輸實時內容,則API將返回一個insufficientPermissions錯誤。

但是我所有的頻道都被批准用於Youtube Live。任何想法如何讓這個工作?

+0

胡亂猜測你可能成爲YouTube內容合作伙伴。或者https://support.google.com/youtube/answer/2474026?hl=zh-CN – DaImTo

+0

@DalmTo:我已經多次瀏覽過許多文檔頁面,並且他們沒有提及必須成爲內容合作伙伴(如果你想在你的視頻流中顯示廣告,並且關於你的鏈接:還請檢查一下,我的頻道可以在沒有任何限制的情況下直播。 – EluciusFTW

+0

世界各地你在哪裏? – DaImTo

回答

2

確定我們之間通過電子郵件進行了一些測試後。

  1. 你需要通過更改「用戶」有正確的範圍「YouTubeService.Scope.YoutubeForceSsl」我們再次被迫請求權限。關於filedata商店如何在Google中工作的我的tutorial。網絡客戶端庫

  2. 通過發送「代碼段,狀態」刪除空間「片段,狀態」它爲我工作。

對於它的樂趣:Issue 8568:LiveBroadcasts: insert - spaces in part

+0

謝謝!讓我補充一下:「status」和「snippet」不能自行工作,只有包含「status」和「片段「(可能還有更多字符串),並且沒有空格。 – EluciusFTW

+0

對於'livestreams.insert'請求也會出現類似的問題。有必要在請求中包含「snippet」和「cdn」作爲參數。 – EluciusFTW

+0

謝謝你讓我玩一個新的API :) – DaImTo

相關問題