GoogleWebAuthorizationBroker.AuthorizeAsync 挂起
- 作者: 亖呉?盀
- 来源: 51数据库
- 2022-10-20
问题描述
我们的网站需要从后面的代码(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 *****, customers upload videos to us, and the ***** approves them. when the ***** approves them, it is posted on our youtube account. the ***** 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"
});
- C#通过fleck实现wss协议的WebSocket多人Web实时聊天(附源码)
- 团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
- 使用 MSBuild.exe 在发布模式下构建 C# 解决方案
- 当我发布 Web 应用程序时,AfterPublish 脚本不运行
- 构建时 T4 转换的产品仅在下一个构建中使用
- ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
- 新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
- 如何将条件编译符号(DefineConstants)传递给 msbuild
- MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
- NuGet 包还原找不到包,没有源
