問題描述
我們的網站需要從后面的代碼(asp.net mvc 應用程序)上傳視頻到youtube.我正在嘗試獲取 google 憑據,但是當我調用 AuthorizeAsync 時,應用程序只是掛起.我四處尋找解決方案,但似乎沒有任何幫助.我已經在谷歌和堆棧溢出上搜索過明顯的.我發現的大部分內容都提到該應用程序可能無法訪問 appdata 文件夾,因此我嘗試將該文件夾更改為位于 c 驅動器、d 驅動器和實際 inetpub 位置中.我測試并發現我能夠讓應用程序寫入這些位置.
Our website needs to upload videos to youtube from the code behind (asp.net mvc application). I'm trying to get the google credentials, but when i call the AuthorizeAsync, the application just hangs. I've looked all over for a solution and none seem to help out. I've already searched for the obvious on google and stack overflow. most of what i found mentioned that the application might not have access the the appdata folder, so i tried changing the folder to be in the c drive, d drive and in the actual inetpub location. i tested and found i was able to have the application write to those locations.
更具體地說,用戶是我們的管理員,客戶上傳視頻給我們,管理員批準.當管理員批準它們時,它會發布在我們的 youtube 帳戶上.管理員無需執行任何操作,只需單擊批準"按鈕即可.
to be more specific, the user is our admin, customers upload videos to us, and the admin approves them. when the admin approves them, it is posted on our youtube account. the admin should not have to do anything but click the approve button.
為了使這成為一個實際問題,我該怎么做才能通過 AuthorizeAsync?如果您需要更多信息,請告訴我
To make this an actual question, what can i do to get past the AuthorizeAsync? Let me know if you need more info
UserCredential credential;
GoogleWebAuthorizationBroker.Folder = "YouTube.Auth.Store";
using (var stream = new FileStream(CredentialsPath, FileMode.Open,
FileAccess.Read))
{
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
// This OAuth 2.0 access scope allows an application to upload files to the
// authenticated user's YouTube channel, but doesn't allow other types of access.
new[] { YouTubeService.Scope.YoutubeUpload },
"user",
CancellationToken.None,
new FileDataStore("YouTube.Auth.Store")
).Result;
}
推薦答案
找到了解決這個問題的方法.
Found a way to get passed this.
我改用了 GoogleAuthorizationCodeFlow.結果是這樣的:
I used GoogleAuthorizationCodeFlow instead. this is what it turned out to look like:
ClientSecrets secrets = new ClientSecrets()
{
ClientId = CLIENT_ID,
ClientSecret = CLIENT_SECRET
};
var token = new TokenResponse { RefreshToken = REFRESH_TOKEN };
var credentials = new UserCredential(new GoogleAuthorizationCodeFlow(
new GoogleAuthorizationCodeFlow.Initializer
{
ClientSecrets = secrets
}),
"user",
token);
var service = new YouTubeService(new BaseClientService.Initializer()
{
HttpClientInitializer = credentials,
ApplicationName = "TestProject"
});
這篇關于GoogleWebAuthorizationBroker.AuthorizeAsync 掛起的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!