1

我使用YouTube數據API(Java)將視頻上傳到我的YouTube頻道。 我已經在Windows PC上測試過它,並且成功了。 但是樣本中的授權通過打開瀏覽器窗口登錄Google來創建Credential實例。 這在我的Windows PC上很好,但我試圖讓這個代碼在只有SSH訪問權限的遠程Linux機器上工作。YouTube API v3 Java授權

我搜索計算器類似的問題,並找到確切的同樣的問題。但是由於該問題沒有Google工程師需要的特定標籤,因此我將其作爲新問題發佈。

Youtube API V3 Java Any possible without invoking browser to upload video

如果您有任何想法,您能有所幫助,我會非常感激。 謝謝。

回答

2

我尋找方法來實現這一點,並找到它。 我跟着指示在​​

你需要一個新的OAuth用戶端ID,並設置它作爲開發者控制檯的「服務帳戶」 - 的API &身份驗證 - 憑據,然後下載P12關鍵。

您還需要服務帳戶的權限從開發者控制檯更改爲「爲所有者」。

如以上在URL中指定的代碼

Credential credential = Auth.authorize(scopes, "uploadvideo"); 

然後換

GoogleCredential credential = new GoogleCredential.Builder() 
.setTransport(httpTransport) 
.setJsonFactory(JSON_FACTORY) 
.setServiceAccountId(emailAddress) 
.setServiceAccountPrivateKeyFromP12File(new File("MyProject.p12")) 
.setServiceAccountScopes(Collections.singleton(SQLAdminScopes.SQLSERVICE_ADMIN)) 
.setServiceAccountUser("[email protected]") 
.build(); 

。 emailAddress是服務帳戶的電子郵件地址,必須更改P12文件名,Collections。~~~應更改爲範圍(原始示例中的預製版),最後serviceAccountUser應該是您的原始Gmail ID。

我成功地用上面的方法,希望它有幫助。

+0

嗨霍華德 - 如何將服務帳戶設置爲「是所有者」?我只能給它編輯權限,我的用戶帳戶是所有者。當我嘗試「setServiceAccountUser」時,我得到了「401 Unauthorized」。 –

+0

您可以將其更改爲Developers Console(http://console.developers.google.com/project),選擇您的項目,然後在左側框架中單擊權限。 在正確的框架中,您應該看到帳戶,並且可以將它們設置爲「是所有者」。 哦,在setServiceAccountUser中,我把我原來的Gmail帳戶(***@gmail.com)。 –

+0

我可以將用戶帳戶添加爲所有者,而不是服務帳戶。但我想到了我的問題。 –

0

您可以使用SSH作爲代理,然後使用本地瀏覽器來使用該代理。

的ssh -ND 8080 [email protected] 那臺SOCKS代理。只需將瀏覽器的代理設置編輯爲IP:localhost端口:8080,並且您的流量將通過SSH進行傳輸。

只要記住,所有瀏覽器的流量會通過代理,直到你禁用它,當你登錄沒有做任何事情對網絡策略。我可能會建議使用一個專用Chrome實例,例如。

注:這可能不會對域查找工作,所以你需要的地方(到SSH主機)的路由器的IP。

+0

謝謝,我不知道你能做到這一點。但正如我需要自動化的東西,我需要另一種解決方案,我找到了一個。它涉及服務器到服務器的OAuth 2.0。我會自己回答。謝謝! –