2016-02-23 43 views
0

我試圖使用Google服務帳戶列出來自YouTube Data API v3的視頻。我啓動了YouTube API,創建了帳戶服務,但每當我嘗試從我的頻道列出視頻時,即使我確實上傳了視頻,也會顯示0個視頻。Youtube API v3:使用服務帳戶列出視頻

我從他們的文檔中運行樣本,但似乎我的憑據直接從我的服務帳戶列出視頻,而不是我真實的YouTube帳戶。

List<String> scopes = Lists.newArrayList("https://www.googleapis.com/auth/youtube"); 

JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); 
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); 
GoogleCredential credential = new GoogleCredential.Builder() 
      .setTransport(httpTransport) 
      .setJsonFactory(JSON_FACTORY) 
      .setServiceAccountId("youtube-****serviceaccount.com") 
      .setServiceAccountScopes(scopes)    
      .setServiceAccountPrivateKeyFromP12File(new File("C:\\tmp\\youtube.p12")) 
      .build(); 

youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, credential).setApplicationName(
      "youtube-cmdline-uploadvideo-sample").build(); 
YouTube.Channels.List channelRequest = youtube.channels().list("contentDetails"); 
     channelRequest.setMine(true); 
     ChannelListResponse channelResult = channelRequest.execute(); 

    List<Channel> channelsList = channelResult.getItems(); 


    String uploadPlaylistId = channelsList.get(0).getContentDetails().getRelatedPlaylists().getUploads(); 

uploadPlaylistId這裏應該是我的頻道ID,但我不知道它是什麼,我所知道的是,這是一個空的頻道。 (如果我使用我的真實ID頻道檢查,我可以列出我的上傳內容,似乎我的服務帳戶沒有正確引用我的YouTube帳戶...)

+0

YouTube的API不支持服務帳戶,你需要使用的oauth2 – DaImTo

回答

0

您遇到的問題是您正在嘗試使用一個帶有YouTube API的服務帳戶。服務帳戶默認爲擁有自己帳戶的虛擬用戶。該服務帳戶沒有任何內容上傳到其帳戶,我不認爲您可以上傳任何內容。

通常在使用Google API的情況下,您可以授予服務帳戶對您帳戶的訪問權限,方法是將其作爲用戶添加或授予權限。不幸的是,YouTube API無法做到這一點。

如果您嘗試在YouTube API中使用服務帳戶,您通常會看到此錯誤。

未經授權(401)youtubeSignupRequired

如果您嘗試使用OAuth 2.0服務 帳戶流常見此錯誤。 YouTube不支持服務帳戶,並且如果您嘗試使用服務帳戶進行身份驗證,則會收到此 錯誤。

以上信息可在YouTube數據API錯誤文檔中找到here

你需要切換到使用的oauth2

+0

是的,我讀到了......這太瘋狂了,這是不可能的......無論如何,我怎麼可能在沒有用戶許可的情況下做到這一點? –

+1

使用Oauth2保存刷新令牌,在需要訪問數據時使用它來獲取訪問令牌。 – DaImTo

相關問題